it-swarm.com.de

Alles nach einem Teil einer Zeichenfolge löschen

Ich habe eine Saite, die aus drei Teilen besteht. Das Wort Ich möchte, dass die Zeichenfolge (Änderungen), ein separater Teil (ändert sich nicht) und der letzte Teil, der sich ändert. Ich möchte den trennenden Teil und den Endteil löschen. Der getrennte Teil ist "-". Ich frage mich also, ob es eine Möglichkeit gibt, nach einem sicheren Teil des Strings alles zu löschen.

Ein Beispiel für dieses Szenario wäre, wenn ich Folgendes machen wollte: "Stack Overflow - Ein Ort, um Dinge zu fragen": "Stack Overflow". Jede Hilfe wird geschätzt!

25
SweSnow

Zum Beispiel könnten Sie Folgendes tun:

String result = input.split("-")[0];

oder

String result = input.substring(0, input.indexOf("-"));

(und relevante Fehlerbehandlung hinzufügen)

39
assylias

Die Apache-Commons StringUtils bieten eine substringBefore -Methode

StringUtils.substringBefore("Stack Overflow - A place to ask stuff", " - ")

16
roemer

Sie können dies verwenden 

String substr = mysourcestring.substring(0,mysourcestring.indexOf("-"));
3
slezadav

Vielleicht ist es das, wonach Sie suchen:

String str="Stack Overflow - A place to ask stuff";

String newStr = str.substring(0, str.indexOf("-"));
1
waqaslam

Ich habe ein Beispielprogramm für alle Ansätze erstellt und SubString scheint das schnellste zu sein.

Using builder : 54
Using Split : 252
Using Substring  : 10

Unten ist der Beispielprogrammcode

            for (int count = 0; count < 1000; count++) {
        // For JIT
    }
    long start = System.nanoTime();
    //Builder
    StringBuilder builder = new StringBuilder(
            "Stack Overflow - A place to ask stuff");
    builder.delete(builder.indexOf("-"), builder.length());
    System.out.println("Using builder : " + (System.nanoTime() - start)
            / 1000);
    start = System.nanoTime();
    //Split
    String string = "Stack Overflow - A place to ask stuff";
    string.split("-");
    System.out.println("Using Split : " + (System.nanoTime() - start)
            / 1000);
    //SubString
    start = System.nanoTime();
    String string1 = "Stack Overflow - A place to ask stuff";
    string1.substring(0, string1.indexOf("-"));
    System.out.println("Using Substring : " + (System.nanoTime() - start)
            / 1000);
    return null;
1
Amit Deshpande

Das wird tun, was Sie brauchen:

newValue = oldValue.substring(0, oldValue.indexOf("-");
0
Dan D.

sie können meine Utils Methode diese Aktion ..

public static String makeTwoPart(String data, String cutAfterThisWord){
    String result = "";

    String val1 = data.substring(0, data.indexOf(cutAfterThisWord));

    String va12 = data.substring(val1.length(), data.length());

    String secondWord = va12.replace(cutAfterThisWord, "");

    Log.d("VAL_2", secondWord);

    String firstWord = data.replace(secondWord, "");

    Log.d("VAL_1", firstWord);

    result = firstWord + "\n" + secondWord;


    return result;
}`
0
Caner Yılmaz

Reinigen Sie den Weg, um bis zu einer Zeichenfolge sicher zu entfernen, und bewahren Sie das gesuchte Teil auf, wenn Token vorhanden sein kann oder nicht.

String input = "Stack Overflow - A place to ask stuff";
String token = " - ";
String result = input.contains(token)
  ? token + StringUtils.substringBefore(string, token)
  : input;
// Returns "Stack Overflow - "

Apache StringUtils Funktionen sind null-, leer- und nicht übereinstimmungssicher

0
Gibolt
String line = "deltaasm:/u01/app/Oracle/product/11.2.0/dbhome_1:N        # line addred by agent";

    String rep = "deltaasm:";
    String after = "";

    String pre = ":N";
    String aft = "";
    String result = line.replaceAll(rep, after);
    String finalresult = result.replaceAll(pre, aft);
    System.out.println("Result***************" + finalresult);

    String str = "deltaasm:/u01/app/Oracle/product/11.2.0/dbhome_1:N        # line addred by agent";

    String newStr = str.substring(0, str.indexOf("#"));
    System.out.println("======" + newStr);
0
Kailas Kakade