2010-04-17 110 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