Closed. This question needs details or clarity。它当前不接受答案。
想改善这个问题吗?添加详细信息并通过editing this post阐明问题。
6年前关闭。
Improve this question
我正在为学校设计一个android项目。我们在editText中提供了转义的xml,我可以从editText中读取文本,但是我想要从中获取值。因此例如在editText中:
我打算做的是
基于上面的xml,我希望这些值最后看起来像这样:
如果您能帮助我,我将非常感激。我读过正则表达式的工作,但我对正则表达式不太满意。如果还有另一种方法,我也会采取这种方法。
感谢您所有的帮助。
想改善这个问题吗?添加详细信息并通过editing this post阐明问题。
6年前关闭。
Improve this question
我正在为学校设计一个android项目。我们在editText中提供了转义的xml,我可以从editText中读取文本,但是我想要从中获取值。因此例如在editText中:
<ResponseSummary>
<ID>spq789pie</ID>
<No>305</No>
<ItemCount>1</ItemCount>
<Total>1.00</Total>
</ResponseSummary>
我打算做的是
String response = edtResponse.getText().toString()
从editText中捕获txt。我想做的是这样的:string test = (some expression that searches text and return a value text from a string)
if (test = "ID"){setID(ID);}
else if(No = "No"){setNo(No);}
else if(ItemCount = "ItemCount"){setItemCount(ItemCount);}
else if(Total = "Total"){setTotal(Total);}
基于上面的xml,我希望这些值最后看起来像这样:
ID = spq789pie
No = 305
ItemCount = 1
Total = 1.00
如果您能帮助我,我将非常感激。我读过正则表达式的工作,但我对正则表达式不太满意。如果还有另一种方法,我也会采取这种方法。
感谢您所有的帮助。
最佳答案
您可以使用此:
Matcher m = Pattern.compile("(?:<ResponseSummary>|(?!^)\\G)\\s*"
+ "<(?<key>(?>[^&]++|&(?!gt;))*)>"
+ "(?<value>(?>[^&]++|&(?!lt;))*)"
+ "</\\1>").matcher(txt);
while (m.find()) {
System.out.println(m.group("key") + " = " + m.group("value"));
}
\G
锚代表字符串的开始或最后一场比赛的结束。负前瞻(?!^)
用于排除第一种情况。关于java - 从长字符串中提取文本并存储在变量中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23449368/
10-09 00:18