我需要通过字符串查找所有[]并在其间获取文本并用不同的东西替换它。
例如:
HTTP:\ www.domain.com \ ID = [USER_ID]&安培;记录= [CALL_KEY]&安培;一些其它= [OTHER_STUFF]
现在,我必须对每个单独的密钥进行硬编码并将其替换为值。
private String injectValues(String url) {
String injected = url.replace("[CALL_KEY]", "123");
injected = injected.replace("[USER_ID]", "some user ide");
injected = injected.replace("[OTHER_STUFF]", "somethingElse");
return injected;
}
我有一堆可以插入的不同值,而不是硬编码[CALL KEY]等,我想动态读取其中的内容并注入值。
我在Objective-C中使用过RegEx enumerateMatchesInString
,是否有Android / Java等价物?
我对Pattern
进行了修改,但我对此并不了解,以使其能够满足我的需求。
private void injectValues(String url) {
Pattern pattern = Pattern.compile("[(.+?)]");
Matcher matcher = pattern.matcher(url);
....///EEEEEHH how do I get the matches?
String key = ;//THE VALUE INSIDE THE SQUARE BRACKETS
String aValue = someMethodToGetTheValueForKey(key);
}
private String someMethodToGetTheValueForKey(String key){
return "Something";
}
答案 0 :(得分:0)
这就是你所缺少的:
// how do I get the matches?
while(matcher.find()) {
String key = matcher.group(1); //THE VALUE INSIDE THE SQUARE BRACKETS
此外,您可能需要查看Matcher.appendReplacement文档中的示例代码,并将其作为起点。
答案 1 :(得分:0)
我建议一个非常简单的方法。
如果你可以使用 Apache commons ,你可以这样做:
String s = "id=[USER_ID]&record=[CALL_KEY]&someother=[OTHER_STUFF]";
String[] arrayKeys = StringUtils.substringsBetween(s, "[", "]")
arrayKeys 将包含"之间的键。 []"。然后你应该替换 " [" + arrayKeys [0] +"] "例如,你的价值。