用 Java 中的字符串中的变量值替换变量的名称
Replacing names of the variable with value of the variable in a String in Java
我有一个这样的字符串:"#{var1} is like #{var2}
。
我想用变量 var1
和 var1
的值替换 "#{var1}
和 "#{var1}
。有没有一种聪明的方法可以做到这一点,而无需遍历整个字符串并找到模式 #{}
然后替换它?
我找不到可以做到这一点的图书馆。
您可以使用 java 内置正则表达式机制在检查的字符串中查找模式,并使用适当的函数进行替换。让我告诉你...
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);
更多示例here
希望对您有所帮助。
可能最简单的方法是使用 String.format
。它在内部使用 Formatter
class。
这种方法的优点是不需要任何第三方库(String.format
是在 Java 1.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
中的数字。它们指的是参数在格式调用中的位置。这允许您多次使用变量,并且可以自由地重新排列变量的顺序(在格式字符串中)。
有关格式字符串的更多信息,请参阅 Formatter 文档。
我有一个这样的字符串:"#{var1} is like #{var2}
。
我想用变量 var1
和 var1
的值替换 "#{var1}
和 "#{var1}
。有没有一种聪明的方法可以做到这一点,而无需遍历整个字符串并找到模式 #{}
然后替换它?
我找不到可以做到这一点的图书馆。
您可以使用 java 内置正则表达式机制在检查的字符串中查找模式,并使用适当的函数进行替换。让我告诉你...
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);
更多示例here
希望对您有所帮助。
可能最简单的方法是使用 String.format
。它在内部使用 Formatter
class。
这种方法的优点是不需要任何第三方库(String.format
是在 Java 1.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
中的数字。它们指的是参数在格式调用中的位置。这允许您多次使用变量,并且可以自由地重新排列变量的顺序(在格式字符串中)。
有关格式字符串的更多信息,请参阅 Formatter 文档。