Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中,用字符串中的变量值替换变量名_Java_String_Character Replacement - Fatal编程技术网

在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})的可能重复项有理由不使用吗?