2015-06-02 126 views
6

我有字符串壓倒一切的方法,它返回字符串中的格式:我想字符串內容分成兩個部分如何在第一個逗號前分割字符串?

"abc,cde,def,fgh" 

:第一逗號之前

  1. 字符串和

  2. 第一個逗號後面的字符串

我的最主要的方法是:

@Override 
protected void onPostExecute(String addressText) { 

    placeTitle.setText(addressText); 
} 

現在我該怎樣分割字符串成兩個部分,這樣我就可以使用它們設置在兩個不同的TextView的文本?

回答

12

您可以使用下面的代碼片段 -

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

我試過這段代碼,併爲我工作@Razib正確的s到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` 

如果你只想要cde作爲第一個逗號後面的字符串。 然後你可以使用

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

或不限制

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

不要忘記檢查length避免ArrayIndexOutOfBound

+1

分裂[1]在第一個逗號之後將不會返回完整的字符串 – Arjit

+0

OP說:'2)第一個逗號後的字符串「這是什麼意思?如果有像'abc,cde,def,fgh'這樣的輸入,那麼我會看到'splitted [1]'會返回'cde'不是嗎? @Arjit – Saif

+1

沒有@saif你錯了。 _splitted [1] _將有cde和Op想要擁有_cde,def,fgh_也希望你讀到這個問題**我想將字符串Content分解成兩部分** –

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

下面是你正在尋找什麼:

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

這會給2字符串數組。斯普利特two versions.什麼,你可以嘗試是

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

有關詳細信息,請參閱本documentation

1

使用分裂與正則表達式:

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

jse1.4String - 兩個split方法是新的。 subSequence方法已被添加,正如String現在實現的CharSequence接口所要求的那樣。已添加三種其他方法:matches,replaceAllreplaceFirst

使用Java String.split(String regex, int limit)Pattern.quote(String s)

字符串 「BOO:和:foo」 的,例如,產生具有這些參數的如下結果:

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

我有臉在URL參數中的同樣的問題,爲了resoleve它,我需要根據第一個?拆分因此,剩餘字符串包含參數值,他們需要根據&拆分。

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«使用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

:在這種情況下,你可以使用replaceAll一些正則表達式來得到這個輸入這樣你就可以使用:

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

如果密鑰僅僅是一個字符串可以使用(\\D?),.*

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