2015-06-02 18 views
6

Ich habe eine übergeordnete Methode mit String, String im Format von zurückgibt:Wie wird String vor dem ersten Komma geteilt?

"abc,cde,def,fgh" 

ich den String Inhalt in zwei Teile geteilt werden soll:

  1. String vor dem ersten Komma und

  2. Zeichenkette nach dem ersten Komma

Meine vorrangige Methode ist:

@Override 
protected void onPostExecute(String addressText) { 

    placeTitle.setText(addressText); 
} 

Nun, wie kann ich die Zeichenfolge in zwei Teile geteilt, so dass ich sie den Text in zwei verschiedenen TextView einstellen kann?

Antwort

12

Sie können den folgenden Code-Schnipsel verwenden -

String str ="abc,cde,def,fgh"; 
String kept = str.substring(0, str.indexOf(",")); 
String remainder = str.substring(str.indexOf(",")+1, str.length);    
+0

Ich habe diesen Code versucht und arbeitete für mich @Razib korrigieren s zu strr. –

5
String splitted[] =s.split(",",2); // will be matched 1 times. 

splitted[0] //before the first comma. `abc` 
splitted[1] //the whole String after the first comma. `cde,def,fgh` 

Wenn Sie nur cde als die Zeichenfolge nach dem ersten Komma möchten. Dann können Sie

String splitted[] =s.split(",",3); // will be matched 2 times 

oder ohne Limit verwenden

String splitted[] =s.split(","); 

Vergessen Sie nicht, die length zu überprüfen ArrayIndexOutOfBound zu vermeiden.

+1

gespaltet [1] können Sie die vollständige Zeichenfolge nach dem ersten Komma zurückgeben – Arjit

+0

OP sagt nicht: nach dem ersten Komma '2) string Was bedeutet das? und wenn es Eingabe gibt wie 'abc, cde, def, fgh' dann sehe ich' splitted [1] 'wird' cde' zurückgeben, nicht wahr? @Arjit – Saif

+1

Nein @saif Sie irren sich. _splitted [1] _ wird cde haben und Op will _cde, def, fgh_ haben Auch hoffe ich, dass Sie das in Frage lesen ** Ich möchte den String Content in zwei Teile aufteilen ** –

2
String s =" abc,cde,def,fgh"; 
System.out.println("subString1="+ s.substring(0, s.indexOf(","))); 
System.out.println("subString2="+ s.substring(s.indexOf(",") + 1, s.length())); 
2

Die unten ist das, was Sie suchen:

public String[] split(",", 2) 

Dies wird 2 String-Array geben. Split hat two versions. Was können Sie versuchen, ist

String str = "abc,def,ghi,jkl"; 
String [] twoStringArray= str.split(",", 2); //the main line 
System.out.println("String befor comma = "+twoStringArray[0]);//abc 
System.out.println("String after comma = "+twoStringArray[1]);//def,ghi,jkl 
1
// Note the use of limit to prevent it from splitting into more than 2 parts 
String [] parts = s.split(",", 2); 

// ...setText(parts[0]); 
// ...setText(parts[1]); 

Weitere Informationen finden Sie in diesem documentation.

1

Verwenden Split mit regex:

String splitted[] = addressText.split(",",2); 
System.out.println(splitted[0]); 
System.out.println(splitted[1]); 
0

Von jse1.4String-Zwei split Methoden sind neu. Die subSequence-Methode wurde hinzugefügt, wie von der CharSequence-Schnittstelle gefordert, die String jetzt implementiert. Drei weitere Methoden wurden hinzugefügt: matches, replaceAll und replaceFirst.

Mit Java String.split(String regex, int limit) mit Pattern.quote(String s)

Die Zeichenfolge "Boo: und: foo" zum Beispiel ergibt die folgenden Ergebnisse mit diesen Parametern:

Regex  Limit   Result 
    :   2  { "boo", "and:foo" } 
    :   5  { "boo", "and", "foo" } 
    :  -2  { "boo", "and", "foo" } 
    o   5  { "b", "", ":and:f", "", "" } 
    o  -2  { "b", "", ":and:f", "", "" } 
    o   0  { "b", "", ":and:f" } 
String str = "abc?def,ghi?jkl,mno,pqr?stu,vwx?yz"; 
String quotedText = Pattern.quote("?"); 
// ? - \\? we have to escape sequence of some characters, to avoid use Pattern.quote("?"); 
String[] split = str.split(quotedText, 2); // ["abc", "def,ghi?jkl,mno,pqr?stu,vwx?yz"] 
for (String string : split) { 
    System.out.println(string); 
} 

Ich habe Gesicht das gleiche Problem in URL-Parameter, Um es resoleve ich muss basierend auf ersten teilen ? So dass die verbleibende Zeichenfolge Parameterwerte enthält und sie basierend auf & aufgeteilt werden müssen.

String paramUrl = "https://www.google.co.in/search?q=encode+url&oq=encode+url"; 

String subURL = URLEncoder.encode(paramUrl, "UTF-8"); 
String myMainUrl = "http://example.com/index.html?url=" + subURL +"&name=chrome&version=56"; 

System.out.println("Main URL : "+ myMainUrl); 

String decodeMainURL = URLDecoder.decode(myMainUrl, "UTF-8"); 
System.out.println("Main URL : "+ decodeMainURL); 

String[] split = decodeMainURL.split(Pattern.quote("?"), 2); 

String[] Parameters = split[1].split("&"); 
for (String param : Parameters) { 
    System.out.println(param); 
} 

Run Javascript on the JVM with Rhino/Nashorn «Mit String.prototype.split Funktion des JavaScript:

var str = "abc?def,ghi?jkl,mno,pqr?stu,vwx?yz"; 
var parts = str.split(','); 
console.log(parts); // (5) ["abc?def", "ghi?jkl", "mno", "pqr?stu", "vwx?yz"] 
console.log(str.split('?')); // (5) ["abc", "def,ghi", "jkl,mno,pqr", "stu,vwx", "yz"] 

var twoparts = str.split(/,(.+)/); 
console.log(parts); // (3) ["abc?def", "ghi?jkl,mno,pqr?stu,vwx?yz", ""] 
console.log(str.split(/\?(.+)/)); // (3) ["abc", "def,ghi?jkl,mno,pqr?stu,vwx?yz", ""] 
0

: In diesem Fall, dass Sie replaceAll mit einigen regex verwenden können diese Eingabe zu erhalten, so können Sie Verwenden Sie:

System.out.println("test another :::"+test.replaceAll("(\\.*?),.*", "$1")); 

Wenn der Schlüssel ist nur ein String Sie (\\D?),.*

System.out.println("test ::::"+test.replaceAll("(\\D?),.*", "$1")); 
Verwandte Themen