是否可以执行以下操作:
calculate(String match) {
if (match.equals("expr"))
return "no time";
else
return "some time";
}
String text = "You have {expr} or {other} left";
text = text.replaceAll( "{(.+)}", calculate(match) );
大括号内的值,如“expr”,将以某种方式在函数 calculate(“expr”)中处理,结果将用作替换 ?生成的String应该如下所示
"You have no time or some time left"
我知道这样的事情在javascript中是可能的,但我不知道如何在GWT中这样做
答案 0 :(得分:0)
这不是你想要的,但它应该给你以后的结果:
public static String calculate( String text )
{
String regex = "[{][^{]+[}]", replacement = "";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(text);
while ( m.find() )
{
String match = m.group();
if ( "{expr}".equals(match) ) replacement = "X";
else replacement = "Y";
text = text.replaceFirst(regex, replacement);
}
return text;
}
然后使用它:
String text = "You have {expr} or {other} left";
System.out.println(calculate(text));
答案 1 :(得分:0)
您可以使用Java's String-format。在你的例子中,这将是这样的:
String text = "You have %s left";
String resultText = String.format(text, calculate(match));
根据calculate的返回值,resultText是以下两者之一:
"You have some time left"
"You have no time left"
%s
用于字符串。在提供的链接中,您可以看到许多其他选项。
您还可以在单个字符串中使用多个%-options
:
String text = "You have %s left to do the following task: %s";
String resultText = String.format(text, calculate(match)), "Programming in Java");
// OR
String resultText2 = String.format(text, new String[]{ calculate(match), "Programming in Java" });