2015-06-02 12 views
6

Mam metodę nadrzędny sznurkiem, która zwraca ciąg w formacie:Jak podzielić ciąg przed pierwszym przecinkiem?

"abc,cde,def,fgh" 

Chcę podzielić zawartość ciąg na dwie części:

  1. String przed pierwszym przecinkiem i

  2. Ciąg po pierwszym przecinku

Moja metoda nadrzędnym jest:

@Override 
protected void onPostExecute(String addressText) { 

    placeTitle.setText(addressText); 
} 

Teraz jak mogę podzielić ciąg na dwie części, tak, że można z nich korzystać, aby ustawić tekst w dwóch różnych TextView?

Odpowiedz

12

Można użyć następującego fragmentu kodu -

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

Próbowałem tego kodu i pracował dla mnie @Razib poprawne s do 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` 

Jeśli chcesz tylko cde jako ciąg po pierwszym przecinku. Następnie można użyć

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

lub bez limitu

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

Nie zapomnij sprawdzić length uniknąć ArrayIndexOutOfBound.

+1

dzielone [1] nie wróci cały ciąg po pierwszym przecinkiem – Arjit

+0

PO mówi: '2) ciąg po pierwszym przecinkiem "co to znaczy? i jeśli jest wejście takie jak 'abc, cde, def, fgh' wtedy widzę' splitted [1] 'zwróci' cde' czy nie jest? @Arjit – Saif

+1

Nie, jesteś błędny. _splitted [1] _ będzie mieć cde, a Op chce mieć _cde, def, fgh_ Mam nadzieję, że to przeczytałeś ** Chcę podzielić treść ciągu na dwie części ** –

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

Poniżej jest to, czego szukasz:

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

To daje 2 tablicę ciągów. Split ma two versions. Co można spróbować to

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

Aby uzyskać więcej informacji, zapoznaj się z tą documentation.

1

Zastosowanie split z regex:

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

Od jse1.4String - Dwa split metody są nowe. Dodano metodę subSequence, zgodnie z wymaganiami interfejsu CharSequence, który obecnie implementuje String. Dodano trzy dodatkowe metody: matches, replaceAll i replaceFirst.

Korzystanie Java String.split(String regex, int limit) z Pattern.quote(String s)

ciąg "boo a: foo", na przykład, daje następujące wyniki z tych parametrów:

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

Mam twarz ten sam problem w parametrach adresu URL Aby go przywrócić należy podzielić na podstawie pierwszego ? Tak, aby pozostały ciąg zawierał wartości parametrów i należy je podzielić na podstawie &.

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 «Z String.prototype.split funkcji JavaScript za:

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

: W tym przypadku można użyć replaceAll z pewnym regex, aby uzyskać ten wkład, dzięki czemu można użyj:

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

Jeśli klucz jest tylko String można użyć (\\D?),.*

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