我正在编写一个程序,允许用户输入变量名,然后他们可以在其他字符串中使用。例如,如果用户输入:
$token aslkdjfna98y
为键“token”和值“aslkdjfna98y”创建映射。然后,我想通过指定应该使用以下语法将其换出,从而在 URL 中添加此令牌变量:
http://www.example.com/getThing?token=$^{token}
所以在这里,我想$^{token}
用我的映射值aslkdjfna98y进行交换。
我尝试了各种String.replace
和String.replaceAll
调用,但是我目前陷入了一个循环 - 已知字符串包含文本$^{token},但我无法替换文本。这是我苦苦挣扎的地方:
if (request.contains("$^{"))
{
//handle variables
for (String s : variables.keySet())
{
String str = String.format(Locale.US, "$^{%s}", s);
while(request.contains(str))
{
//Stuck Here
request = request.replace(String.format(Locale.US, "$^{%s}", s), variables.get(s));
}
}
}
理想情况下,这可以简化为:
request.replaceAll(regex, str);
如何正确替换字符,或者如何改进它以使用replaceAll
?