Woher wissen Sie, welchen Teil Sie behalten und welchen Sie wegwerfen müssen? Ohne das zu wissen, ist es unmöglich, Ihre Frage zu beantworten?
Raedwald
Antworten:
156
Es gibt mehrere Möglichkeiten, dies zu tun. Wenn Sie die Zeichenfolge haben, die Sie ersetzen möchten, können Sie die Methoden replaceoder replaceAllder StringKlasse verwenden. Wenn Sie einen Teilstring ersetzen möchten, können Sie den Teilstring über die substringAPI abrufen .
Zum Beispiel
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));
Um Inhalte innerhalb von "()" zu ersetzen, können Sie Folgendes verwenden:
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));
Ich war nicht der Downvoter, aber vielleicht, weil Sie Replace in den falschen Fall gebracht haben?
Mike Kwan
1
Upvoted, um die Auswirkung einer vorbeifahrenden (dh ungeklärten und anscheinend fadenscheinigen) Abstimmung zu negieren.
Gayot Fow
Es ist nicht erforderlich, dass die Zeichenfolge mit dem angegebenen Beispiel übereinstimmt. Sie können also nicht ersetzen verwenden.
Verwirren Sie den
Hier gibt es einen Leistungsvergleich. Die String-Ersetzungsmethode verwendet reguläre Ausdrücke unter der Haube. stackoverflow.com/questions/16228992/…
StringBuilder str = new StringBuilder("manchester united (with nice players)");
int startIdx = str.indexOf("(");
int endIdx = str.indexOf(")");
str.replace(++startIdx, endIdx, "");
Ich würde zuerst die ursprüngliche Zeichenfolge in ein Array von Zeichenfolgen mit einem Token "(" aufteilen und die Zeichenfolge an Position 0 des Ausgabearrays ist das, was Sie gerne hätten.
String[] output = originalString.split(" (");
String result = output[0];
Sie sollten die substring () -Methode des String-Objekts verwenden.
Hier ist ein Beispielcode:
Annahme: Ich gehe hier davon aus, dass Sie die Zeichenfolge bis zur ersten Klammer abrufen möchten
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);
Eine Null-Quellzeichenfolge gibt null zurück. Eine leere ("") Quellzeichenfolge gibt die leere Zeichenfolge zurück. Eine Null-Entfernungszeichenfolge gibt die Quellzeichenfolge zurück. Eine leere ("") Entfernungszeichenfolge gibt die Quellzeichenfolge zurück.
String str = StringUtils.remove("Test remove", "remove");
System.out.println(str);
//result will be "Test"
// Java program to remove a substring from a stringpublicclassRemoveSubString{
publicstaticvoidmain(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);
}
}
Sie könnten verwenden replace, um Ihre Zeichenfolge zu reparieren. Im Folgenden wird alles vor einem "(" zurückgegeben und auch alle führenden und nachfolgenden Leerzeichen entfernt. Wenn die Zeichenfolge mit einem "(" beginnt, wird sie einfach unverändert gelassen.
str = "manchester united (with nice players)"
matched = str.match(/.*(?=\()/)
str.replace(matched[0].strip) if matched
Dies scheint in Java nicht zu funktionieren. Es könnte eine Ableitung von ECMAscript sein. Haben Sie eine Methode, mit der dieser Code wie in Java funktioniert?
1111161171159459134
0
Kotlin-Lösung
Wenn Sie eine bestimmte Zeichenfolge am Ende entfernen, verwenden SieremoveSuffix ( Dokumentation ).
var text = "one(two"
text = text.removeSuffix("(two") // "one"
Wenn das Suffix in der Zeichenfolge nicht vorhanden ist, wird nur das Original zurückgegeben
var text = "one(three"
text = text.removeSuffix("(two") // "one(three"
Wenn Sie nach einem Zeichen entfernen möchten, verwenden Sie
// 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, "")
Antworten:
Es gibt mehrere Möglichkeiten, dies zu tun. Wenn Sie die Zeichenfolge haben, die Sie ersetzen möchten, können Sie die Methoden
replace
oderreplaceAll
derString
Klasse verwenden. Wenn Sie einen Teilstring ersetzen möchten, können Sie den Teilstring über diesubstring
API abrufen .Zum Beispiel
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));
Um Inhalte innerhalb von "()" zu ersetzen, können Sie Folgendes verwenden:
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));
quelle
String toBeReplaced = str.substring(startIndex , endIndex + 1);
String ersetzen
String s = "manchester united (with nice players)"; s = s.replace(" (with nice players)", "");
Bearbeiten:
Nach Index
s = s.substring(0, s.indexOf("(") - 1);
quelle
s = s.replace(...)
Verwenden Sie String.Replace ():
http://www.daniweb.com/software-development/java/threads/73139
Beispiel:
String original = "manchester united (with nice players)"; String newString = original.replace(" (with nice players)","");
quelle
originalString.replaceFirst("[(].*?[)]", "");
https://ideone.com/jsZhSC
replaceFirst()
kann durch ersetzt werdenreplaceAll()
quelle
Mit StringBuilder können Sie Folgendes ersetzen.
StringBuilder str = new StringBuilder("manchester united (with nice players)"); int startIdx = str.indexOf("("); int endIdx = str.indexOf(")"); str.replace(++startIdx, endIdx, "");
quelle
Ich würde zuerst die ursprüngliche Zeichenfolge in ein Array von Zeichenfolgen mit einem Token "(" aufteilen und die Zeichenfolge an Position 0 des Ausgabearrays ist das, was Sie gerne hätten.
String[] output = originalString.split(" ("); String result = output[0];
quelle
Sie sollten die substring () -Methode des String-Objekts verwenden.
Hier ist ein Beispielcode:
Annahme: Ich gehe hier davon aus, dass Sie die Zeichenfolge bis zur ersten Klammer abrufen möchten
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);
quelle
Verwenden von StringUtils aus Commons lang
Eine Null-Quellzeichenfolge gibt null zurück. Eine leere ("") Quellzeichenfolge gibt die leere Zeichenfolge zurück. Eine Null-Entfernungszeichenfolge gibt die Quellzeichenfolge zurück. Eine leere ("") Entfernungszeichenfolge gibt die Quellzeichenfolge zurück.
String str = StringUtils.remove("Test remove", "remove"); System.out.println(str); //result will be "Test"
quelle
// 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); } }
quelle
Wenn Sie nur alles nach dem "(" entfernen müssen, versuchen Sie dies. Tut nichts, wenn keine Klammern vorhanden sind.
StringUtils.substringBefore(str, "(");
Wenn nach den Endklammern möglicherweise Inhalt vorhanden ist, versuchen Sie dies.
String toRemove = StringUtils.substringBetween(str, "(", ")"); String result = StringUtils.remove(str, "(" + toRemove + ")");
Verwenden Sie zum Entfernen von Endräumen
str.trim()
quelle
Sie könnten verwenden
replace
, um Ihre Zeichenfolge zu reparieren. Im Folgenden wird alles vor einem "(" zurückgegeben und auch alle führenden und nachfolgenden Leerzeichen entfernt. Wenn die Zeichenfolge mit einem "(" beginnt, wird sie einfach unverändert gelassen.str = "manchester united (with nice players)" matched = str.match(/.*(?=\()/) str.replace(matched[0].strip) if matched
quelle
Kotlin-Lösung
Wenn Sie eine bestimmte Zeichenfolge am Ende entfernen, verwenden Sie
removeSuffix
( Dokumentation ).var text = "one(two" text = text.removeSuffix("(two") // "one"
Wenn das Suffix in der Zeichenfolge nicht vorhanden ist, wird nur das Original zurückgegeben
var text = "one(three" text = text.removeSuffix("(two") // "one(three"
Wenn Sie nach einem Zeichen entfernen möchten, verwenden Sie
// 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, "")
Sie können auch überprüfen
removePrefix
,removeRange
,removeSurrounding
, undreplaceAfterLast
die ähnlichDie vollständige Liste finden Sie hier: ( Dokumentation )
quelle