所以我目前有这个代码;
for (int i = 1; i <= this.max; i++) {
in = in.replace("{place" + i + "}", this.getUser(i)); // Get the place of a user.
}
哪个效果很好,但我想保持简单(使用模式匹配) 所以我用这段代码检查它是否匹配;
System.out.println(StringUtil.matches("{place5}", "\\{place\\d\\}"));
StringUtil的匹配;
public static boolean matches(String string, String regex) {
if (string == null || regex == null) return false;
Pattern compiledPattern = Pattern.compile(regex);
return compiledPattern.matcher(string).matches();
}
返回true,然后是我需要帮助的下一部分,替换{place5}以便我可以解析数字。我可以替换&#34; {place&#34;和&#34;}&#34;,但是如果字符串中有多个(&#34; {place5} {username}&#34;),那么我就不能再这样做了,据我所知,如果您知道是否有一种简单的方法可以做到,请告诉我,如果不是,我可以坚持使用for循环。
答案 0 :(得分:2)
然后是我需要帮助的下一部分,替换{place5}以便我可以解析数字
为了获得{place
之后的数字,您可以使用
s = s.replaceAll(".*\\{place(\\d+)}.*", "$1");
正则表达式在我们搜索的字符串之前匹配任意数量的字符,然后匹配{place
,然后我们匹配并捕获 1个或多个数字(\d+)
,然后我们将字符串的其余部分与.*
匹配。请注意,如果字符串具有换行符号,则应在模式的开头附加(?s)
。替换模式中的$1
“恢复”我们需要的值。