Ответ 1
Например, вы можете сделать:
String result = input.split("-")[0];
или
String result = input.substring(0, input.indexOf("-"));
(и добавьте соответствующую обработку ошибок)
У меня есть строка, которая построена из трех частей. Я хочу, чтобы строка была (изменяется), разделяющая часть (не изменяется) и последняя часть, которая изменяется. Я хочу удалить разделяющую часть и конечную часть. Разделяющая часть - "-", поэтому мне интересно, есть ли способ удалить все после определенной части строки.
Примером этого сценария было бы, если бы я хотел включить это: "Переполнение стека - место, где можно спросить": "Переполнение стека". Любая помощь приветствуется!
Например, вы можете сделать:
String result = input.split("-")[0];
или
String result = input.substring(0, input.indexOf("-"));
(и добавьте соответствующую обработку ошибок)
Атрибуты apache StringUtils предоставляют метод substringBefore
StringUtils.substringBefore("Qaru - A place to ask stuff", " - ")
Вы можете использовать этот
String substr = mysourcestring.substring(0,mysourcestring.indexOf("-"));
Возможно, это то, что вы ищете:
String str="Qaru - A place to ask stuff";
String newStr = str.substring(0, str.indexOf("-"));
Я создал образец программы для всех совпадений, а 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;
Это сделает то, что вам нужно:
newValue = oldValue.substring(0, oldValue.indexOf("-");
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);
Вы можете мой метод утилит это действие..
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;
}'
Чистый способ безопасно удалить до строки и сохранить искомую часть, если токен может существовать или не существовать.
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- безопасны