Подтвердить что ты не робот

Удалить все после части строки

У меня есть строка, которая построена из трех частей. Я хочу, чтобы строка была (изменяется), разделяющая часть (не изменяется) и последняя часть, которая изменяется. Я хочу удалить разделяющую часть и конечную часть. Разделяющая часть - "-", поэтому мне интересно, есть ли способ удалить все после определенной части строки.

Примером этого сценария было бы, если бы я хотел включить это: "Переполнение стека - место, где можно спросить": "Переполнение стека". Любая помощь приветствуется!

4b9b3361

Ответ 1

Например, вы можете сделать:

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

или

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

(и добавьте соответствующую обработку ошибок)

Ответ 2

Атрибуты apache StringUtils предоставляют метод substringBefore

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

Ответ 3

Вы можете использовать этот

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

Ответ 4

Возможно, это то, что вы ищете:

String str="Qaru - A place to ask stuff";

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

Ответ 5

Я создал образец программы для всех совпадений, а SubString кажется самым быстрым.

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

Ниже приведен пример программного кода

            for (int count = 0; count < 1000; count++) {
        // For JIT
    }
    long start = System.nanoTime();
    //Builder
    StringBuilder builder = new StringBuilder(
            "Qaru - 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 = "Qaru - A place to ask stuff";
    string.split("-");
    System.out.println("Using Split : " + (System.nanoTime() - start)
            / 1000);
    //SubString
    start = System.nanoTime();
    String string1 = "Qaru - A place to ask stuff";
    string1.substring(0, string1.indexOf("-"));
    System.out.println("Using Substring : " + (System.nanoTime() - start)
            / 1000);
    return null;

Ответ 6

Это сделает то, что вам нужно:

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

Ответ 7

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);

Ответ 8

Вы можете мой метод утилит это действие..

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;
}'

Ответ 9

Чистый способ безопасно удалить до строки и сохранить искомую часть, если токен может существовать или не существовать.

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 являются null-, empty- и не match- безопасны