2015-06-02 17 views
6

Ho un metodo ridefinito con stringa che restituisce String nel formato:Come dividere la stringa prima della prima virgola?

"abc,cde,def,fgh" 

voglio dividere il contenuto della stringa in due parti:

  1. stringa prima del primo comma e

  2. Stringa dopo il primo virgola

Il mio metodo principale è:

@Override 
protected void onPostExecute(String addressText) { 

    placeTitle.setText(addressText); 
} 

Ora come faccio a dividere la stringa in due parti, in modo che io possa usare per impostare il testo in due diversi TextView?

risposta

12

È possibile utilizzare il seguente frammento di codice -

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

Ho provato questo codice e ho lavorato per me @Razib corretto s per 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` 

Se desideri solo cde come la stringa dopo la prima virgola. Quindi è possibile utilizzare

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

o senza il limite

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

Non dimenticare di controllare la length per evitare ArrayIndexOutOfBound.

+1

spacco [1] non tornerà la stringa pieno dopo la prima virgola – Arjit

+0

OP dice: '2) stringa dopo la prima virgola "cosa significa? e se c'è un input come 'abc, cde, def, fgh' allora vedo' splitted [1] 'restituirà' cde', non è vero? @Arjit – Saif

+1

No @Se si sta sbagliando. _splitted [1] _ avrà cde e Op vuole avere _cde, def, fgh_ Spero anche tu di leggere questo in questione ** Voglio dividere il contenuto della stringa in due parti ** –

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

Il sotto è quello che stai cercando:

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

Questo darà 2 array di stringhe. Spalato ha two versions. Che cosa si può provare è

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

Per ulteriori informazioni, fare riferimento a questa documentation.

1

Usa split con espressioni regolari:

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

Da jse1.4String - due split metodi sono nuovi. È stato aggiunto il metodo subSequence, come richiesto dall'interfaccia CharSequence che ora String implementa. Sono stati aggiunti tre metodi aggiuntivi: matches, replaceAll e replaceFirst.

Utilizzo di Java String.split(String regex, int limit) con Pattern.quote(String s)

La stringa "boo: e: foo", ad esempio, si ottengono i seguenti risultati con questi parametri:

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

Ho la faccia lo stesso problema nei parametri URL, Per risolverlo ho bisogno di dividere in base al primo ? In modo che la stringa restante contenga i valori dei parametri e devono essere suddivisi in base a &.

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 «Con la funzione di JavaScript String.prototype.split:

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 questo caso è possibile utilizzare replaceAll con qualche regex per ottenere questo ingresso in modo da poter utilizzare:

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

Se la chiave è solo un String è possibile utilizzare (\\D?),.*

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