我遇到了一个问题,我有一个Java字符串:
String aString="name==p==?header=hello?aname=?????lname=lastname";
我需要在问号后面跟等号处进行分割。
结果应该是键/值对:
name = "=p=="
header = "hello"
aname = "????"
lname = "lastname"
问题在于aname和lname变成了:
name = ""
lname = "????lname=lastname"
我的代码使用aString.split("\\?",2)
进行分割,它将返回两个字符串。其中一个包含键/值对,而第二个字符串则包含其余的内容。如果我在字符串中找到问号,我将在第二个字符串上递归,以进一步分解它。
private String split(String aString)
{
System.out.println("Split: " + aString);
String[] vals = aString.split("\\?",2);
System.out.println(" - Found: " + vals.length);
for ( int c = 0;c<vals.length;c++ )
{
System.out.println(" - "+ c + "| String: [" + vals[c] + "]" );
if(vals[c].indexOf("?") > 0 )
{
split(vals[c]);
}
}
return ""; // For now return nothing...
}
你有什么想法,如何允许输入姓名中的“?”字符?
免责声明:是的,我的正则表达式技能很低,所以我不知道是否可以通过正则表达式来完成此操作。
p
没有被提取为键? - Evan Knowles=
和?
)。如果您需要这些字符作为键名或值,您应该对它们进行转义,例如name==p==?header=hello?aname=?????lname=lastname
。 - Absurd-Mind