2010-04-17 130 views
1

如果我有一個字符串,例如Java拆分正則表達式

setting=value 

如何刪除'='並將其分別轉換爲包含'setting'和'value'的兩個單獨的字符串?

非常感謝!

回答

10

兩個選項可以讓人記住。

第一split() S中的String=

String[] pieces = s.split("=", 2); 
String name = pieces[0]; 
String value = pieces.length > 1 ? pieces[1] : null; 

第二種方法是使用正則表達式直接解析String

Pattern p = Pattern.compile("(.*?)=(.*)"); 
Matcher m = p.matcher(s); 
if (m.matches()) { 
    String name = m.group(1); 
    String value = m.group(2);  
} 

第二個給你更多的權力。例如,如果將模式更改爲:

Pattern p = Pattern.compile("\\s*(.*?)\\s*=\\s*(.*)\\s*"); 
1

你並不需要爲這個正則表達式,只是做:

String str = "setting=value"; 
String[] split = str.split("="); 
// str[0] == "setting", str[1] == "value" 

您可能需要設置一個limit如果value中可以有一個=過;請參閱javadoc

+1

儘管如此,使用正則表達式_is_可以自動丟失空格。例如,如果你想分割''',你不能'str.split(「?」)'。你必須將其轉義爲'str.split(「\\?」)''。 – polygenelubricants 2010-04-18 03:39:29

+0

啊,是的,我忘了Java的String.split需要一個正則表達式;大多數語言都在字符串上分割 – 2010-04-18 03:48:29