2012-01-01 14 views
48

Chcę usunąć część napisu z jednego znaku, czyli:usunięcie części ciąg

oryginalny łańcuch: Manchester United (z miłych graczy)

Future wynik: Manchester United

+2

Skąd wiadomo, którą część zachować, a którą odrzucić? Nie wiedząc o tym, nie można odpowiedzieć na twoje pytanie? – Raedwald

Odpowiedz

113

Istnieje wiele sposobów, aby to zrobić. Jeśli masz ciąg, który chcesz zastąpić, możesz użyć metod klasy lub replaceAll. Jeśli chcesz zastąpić podłańcuch, możesz uzyskać podciąg przy użyciu interfejsu API substring.

Na przykład

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

Aby zastąpić zawartość wewnątrz "()" można użyć:

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

jakaś literówka. Powinno być 'String toBeReplaced = str.substring (startIndex, endIndex + 1);' – Yeung

+0

również byłoby warte usunięcia miejsca: System.out.println (str. replace ("(z miłymi graczami)", "")); – kiedysktos

17

Wykorzystanie string.replace():

http://www.daniweb.com/software-development/java/threads/73139

przykład:

String original = "manchester united (with nice players)"; 
String newString = original.replace(" (with nice players)",""); 
+0

Jakiś konkretny powód, dla którego został odrzucony? –

+0

Nie byłem downvoter, ale może dlatego, że umieścić Replace w niewłaściwym przypadku? –

+0

Dzięki Mike. Poprawię. –

25

String Wymień

String s = "manchester united (with nice players)"; 
s = s.replace(" (with nice players)", ""); 

EDIT:

przez indeks

s = s.substring(0, s.indexOf("(") - 1); 
+3

nie zapomnij o 's = s.replace (...)' – dasblinkenlight

+0

Zapomniałem tego dzięki. Zaktualizuję. –

+0

Nie może być, ponieważ to, co znajduje się w nawiasach, może się zmienić. Potrzebuję zmienić ciąg znaków od znaku ( – zmki

5

Należy użyć podciąg() metody obiektu String.

Oto przykładowy kod:

Założenie: Zakładam tutaj, że chcesz odzyskać ciąg do pierwszego nawiasu

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

chciałbym najpierw podzielić pierwotny ciąg do tablicy String z tokenem „(” a ciąg w pozycji 0 z tablicy wyjściowej jest to, co chcesz mieć.

String[] output = originalString.split(" ("); 

String result = output[0]; 
0

można użyć do replace napraw twój ciąg. Poniższa wróci wszystko przed „(” a także rozebrać wszystkie początkowe i końcowe spacje. Jeżeli łańcuch zaczyna się od „(” to po prostu zostawić jak jest.

str = "manchester united (with nice players)" 
matched = str.match(/.*(?=\()/) 
str.replace(matched[0].strip) if matched 
+0

To nie działa w Javie.Może to być pochodna ECMAscript.Czy masz jakiś sposób, aby ten kod działał tak jak w Javie? – 1111161171159459134

5

Korzystanie StringBuilder, można wymień w następujący sposób.

StringBuilder str = new StringBuilder("manchester united (with nice players)"); 
int startIdx = str.indexOf("("); 
int endIdx = str.indexOf(")"); 
str.replace(++startIdx, endIdx, ""); 
0
// 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); 

    } 
} 
1

Using StringUtils from commons lang

Źródło ciąg zerowy zwróci wartość null. Pusty łańcuch ("") spowoduje zwrócenie pustego łańcucha. Łańcuch usuwający wartość null zwróci ciąg źródłowy. Pusty łańcuch ("") usuwa łańcuch źródłowy.

String str = StringUtils.remove("Test remove", "remove"); 
System.out.println(str); 
//result will be "Test" 
Powiązane problemy