我有一个字符串的形式是:
我能够解析这个字符串,以便var1和var2都是字符串变量。但是需要多次使用字符串分词器调用,首先从“:”分割,然后提取数据。
那么最好的方法是什么(代码最少)?
{'var1':var2}
我能够解析这个字符串,以便var1和var2都是字符串变量。但是需要多次使用字符串分词器调用,首先从“:”分割,然后提取数据。
那么最好的方法是什么(代码最少)?
{'var1':var2}
如果你只想要一个包含两个值的数组,那么你可以通过提取子字符串并在“:”上分割来完成它。代码大概是这样的:
s = s.substring(2, s.length()-1);
String[] sarr = s.split("':");
String[] sarr = s.substring(2, s.length()-1).split("':");
这应该可以工作:
String yourstring = "{'var1':var2}";
String regex = "\\{'(.+)':(.+)}";
Matcher m = Pattern.compile(regex).matcher(yourstring);
String var1 = m.group(1);
String var2 = m.group(2);
编辑:针对评论者:
字符串:
{'this is':somestring':more stuff:for you}
输出:
var1 = this is':somestring
var2 = more stuff:for you
PS:使用Perl进行测试,目前没有Java可用,非常抱歉。
编辑:如user unknown所指出的那样,看起来Java正则表达式引擎不喜欢未转义的{
。已进行转义。
:':':
var2=
':'
完整的原始字符串将是
{':':':':':'}
情况b) 变量1=
:
var2=
':':':'
完整的原始字符串将会是
{':':':':':'}
类似于(易碎-参见评论):
// 3 lines..
String[] parts = "{'var1':var2} ".trim().split("':");
String var1 = parts[0].substring(2,parts[0].length);
String var2 = parts[1].substring(0,parts[1].length-1);
你可以使用正则表达式:
String re = "\\{'(.*)':(.*)}";
String var1 = s.replaceAll (re, "$1");
String var2 = s.replaceAll (re, "$2");
你需要对开头的{
进行转义,否则会出现java.util.regex.PatternSyntaxException: Illegal repetition异常。