Я хочу видалити частину рядка з одного символу, тобто:
Вихідний рядок:
manchester united (with nice players)
Цільовий рядок:
manchester united
Відповіді:
Існує кілька способів зробити це. Якщо у вас є рядок, який ви хочете замінити, ви можете скористатися методами replaceабо класу. Якщо ви хочете замінити підрядок, ви можете отримати підрядок за допомогою API.replaceAllStringsubstring
Наприклад
String str = "manchester united (with nice players)";
System.out.println(str.replace("(with nice players)", ""));
int index = str.indexOf("(");
System.out.println(str.substring(0, index));
Для заміни вмісту в "()" ви можете використовувати:
int startIndex = str.indexOf("(");
int endIndex = str.indexOf(")");
String replacement = "I AM JUST A REPLACEMENT";
String toBeReplaced = str.substring(startIndex + 1, endIndex);
System.out.println(str.replace(toBeReplaced, replacement));
String toBeReplaced = str.substring(startIndex , endIndex + 1);
Заміна рядка
String s = "manchester united (with nice players)";
s = s.replace(" (with nice players)", "");
Редагувати:
За покажчиком
s = s.substring(0, s.indexOf("(") - 1);
s = s.replace(...)
Використовуйте String.Replace ():
http://www.daniweb.com/software-development/java/threads/73139
Приклад:
String original = "manchester united (with nice players)";
String newString = original.replace(" (with nice players)","");
originalString.replaceFirst("[(].*?[)]", "");
https://ideone.com/jsZhSC
replaceFirst()можна замінити наreplaceAll()
За допомогою StringBuilder ви можете замінити наступним чином.
StringBuilder str = new StringBuilder("manchester united (with nice players)");
int startIdx = str.indexOf("(");
int endIdx = str.indexOf(")");
str.replace(++startIdx, endIdx, "");
Спочатку я б розділив вихідний рядок на масив рядка з маркером "(", а рядок у позиції 0 вихідного масиву - це те, що ви хотіли б мати.
String[] output = originalString.split(" (");
String result = output[0];
Вам слід використовувати метод substring () об'єкта String.
Ось приклад коду:
Припущення: Тут я припускаю, що ви хочете отримати рядок до першої дужки
String strTest = "manchester united(with nice players)";
/*Get the substring from the original string, with starting index 0, and ending index as position of th first parenthesis - 1 */
String strSub = strTest.subString(0,strTest.getIndex("(")-1);
Використання StringUtils із спільного lang
Нульовий рядок джерела поверне нуль. Порожній ("") рядок джерела поверне порожній рядок. Нульовий рядок видалення поверне вихідний рядок. Порожній ("") рядок видалення поверне вихідний рядок.
String str = StringUtils.remove("Test remove", "remove");
System.out.println(str);
//result will be "Test"
// Java program to remove a substring from a string
public class RemoveSubString {
public static void main(String[] args) {
String master = "1,2,3,4,5";
String to_remove="3,";
String new_string = master.replace(to_remove, "");
// the above line replaces the t_remove string with blank string in master
System.out.println(master);
System.out.println(new_string);
}
}
Якщо вам просто потрібно видалити все після "(", спробуйте це. Нічого не робить, якщо немає дужок.
StringUtils.substringBefore(str, "(");
Якщо після кінцевих дужок може бути вміст, спробуйте це.
String toRemove = StringUtils.substringBetween(str, "(", ")");
String result = StringUtils.remove(str, "(" + toRemove + ")");
Щоб видалити кінцеві пробіли, використовуйте str.trim()
Функції Apache StringUtils є нульовими, порожніми та не відповідають безпеці
Ви можете використати replaceдля виправлення рядка. Наведене нижче поверне все перед символом "(", а також видалить усі пробіли, що ведуть і завершують. Якщо рядок починається з "(", це просто залишить його як є.
str = "manchester united (with nice players)"
matched = str.match(/.*(?=\()/)
str.replace(matched[0].strip) if matched
Якщо ви видаляєте певний рядок з кінця, використовуйте removeSuffix ( Документація )
var text = "one(two"
text = text.removeSuffix("(two") // "one"
Якщо суфікс у рядку не існує, він просто повертає оригінал
var text = "one(three"
text = text.removeSuffix("(two") // "one(three"
Якщо ви хочете видалити після символу, використовуйте
// Each results in "one"
text = text.replaceAfter("(", "").dropLast(1) // You should check char is present before `dropLast`
// or
text = text.removeRange(text.indexOf("("), text.length)
// or
text = text.replaceRange(text.indexOf("("), text.length, "")
Ви також можете перевірити removePrefix, removeRange, removeSurroundingі replaceAfterLastякі подібні до
Повний список знаходиться тут: ( Документація )