在Java中,用字符串中的变量值替换变量名
我有这样一个字符串:在Java中,用字符串中的变量值替换变量名,java,string,character-replacement,Java,String,Character Replacement,我有这样一个字符串:“{var1}就像{var2} 我想用变量var1和var1的值替换“#{var1}和var1的值。有没有一种聪明的方法可以做到这一点,而不必迭代整个字符串,找到模式{/code>,然后替换它? 我找不到可以这样做的库。您可以使用java buildin正则表达式机制在检查的字符串中查找模式,并使用适当的函数进行替换。让我演示一下 public static void main(String[] args) { StringBuilder output
“{var1}就像{var2}
我想用变量
var1
和var1
的值替换“#{var1}
和var1
的值。有没有一种聪明的方法可以做到这一点,而不必迭代整个字符串,找到模式{/code>,然后替换它?
我找不到可以这样做的库。您可以使用java buildin正则表达式机制在检查的字符串中查找模式,并使用适当的函数进行替换。让我演示一下
public static void main(String[] args)
{
StringBuilder output = new StringBuilder();
String inputString = "sequence to analize #{var1} is like #{var2}";
Pattern pattern = Pattern.compile("#\\{(.*?)\\}");
Matcher matcher = pattern.matcher(inputString);
int lastStart = 0;
while (matcher.find()) {
String subString = inputString.substring(lastStart,matcher.start());
String varName = matcher.group(1);
String replacement = getVarValue (varName);
output.append(subString).append(replacement);
lastStart = matcher.end();
}
System.out.println(output.toString());
}
private static String getVarValue(String varName) {
return "value"; // do what you got to replace the variable name for its value
}
也许这个例子还需要进一步研究……但它可以给你一个想法
希望能有帮助
您好。您可以使用java buildin正则表达式机制在检查的字符串中查找模式,并使用适当的函数进行替换。让我向您展示
public static void main(String[] args)
{
StringBuilder output = new StringBuilder();
String inputString = "sequence to analize #{var1} is like #{var2}";
Pattern pattern = Pattern.compile("#\\{(.*?)\\}");
Matcher matcher = pattern.matcher(inputString);
int lastStart = 0;
while (matcher.find()) {
String subString = inputString.substring(lastStart,matcher.start());
String varName = matcher.group(1);
String replacement = getVarValue (varName);
output.append(subString).append(replacement);
lastStart = matcher.end();
}
System.out.println(output.toString());
}
private static String getVarValue(String varName) {
return "value"; // do what you got to replace the variable name for its value
}
也许这个例子还需要进一步研究……但它可以给你一个想法
希望能有帮助
您好。您可以这样做。使用String.format
。它并不漂亮,但很有效。它不使用变量名,但仍然非常有用
String string = String.format("A String %s %2d", aStringVar, anIntVar);
还有一些例子吗
希望这有帮助。您可以这样做。使用String.format
。它并不漂亮,但很有效。它不使用变量名,但仍然非常有用
String string = String.format("A String %s %2d", aStringVar, anIntVar);
还有一些例子吗
希望这有帮助。实现这一点最简单的方法可能是使用String.format
。它在内部使用格式化程序
类
这种方法的优点是不需要任何第三方库(String.format
是Java1.5引入的)
这里有一个完整的例子:
import static java.lang.String.format;
public class Interpolate {
public static void main(String[] args) {
String var1 = "foo";
String var2 = "bar";
String s = format("%1$s is like %2$s is like %1$s",var1, var2);
System.out.println(s); // "foo is like bar is like foo"
}
}
请注意%1$s
或%2$s
中的数字。它们指的是参数在格式调用中的位置。这允许您多次使用变量,并且可以自由地重新排列变量的顺序(在格式字符串中)
有关格式字符串的更多信息,请参阅文档。实现此目的最简单的方法可能是使用string.format
。它在内部使用格式化程序
类
这种方法的优点是不需要任何第三方库(String.format
是Java1.5引入的)
这里有一个完整的例子:
import static java.lang.String.format;
public class Interpolate {
public static void main(String[] args) {
String var1 = "foo";
String var2 = "bar";
String s = format("%1$s is like %2$s is like %1$s",var1, var2);
System.out.println(s); // "foo is like bar is like foo"
}
}
请注意%1$s
或%2$s
中的数字。它们指的是参数在格式调用中的位置。这允许您多次使用变量,并且可以自由地重新排列变量的顺序(在格式字符串中)
有关格式字符串的更多信息,请参阅文档。(虽然问题使用${var}而不是#{var})的可能重复项有理由不使用吗?(尽管问题使用${var}而不是#{var})的可能重复项有理由不使用吗?