用Java替换字符串的一部分

时间:2017-03-24 01:47:16

标签: java

我需要通过查找系统属性来替换部分字符串。

例如,考虑字符串它是{var1}美女被杀{var2}

我需要解析字符串,并通过在系统属性中查找它们的值来替换括号中包含的所有单词。如果System.getProperty()返回null,则只需用空字符替换。当我完全了解变量时,这非常简单。但是我需要解析的字符串没有提前定义。我不知道字符串中有多少变量以及变量名是什么。假设一个简单,格式良好的字符串(没有嵌套的括号,开 - 关匹配),解析字符串并替换括号中所有字符序列的最简单或最优雅的方法是什么?

我能想到的唯一解决方法是从第一个字符遍历字符串,记下括号的开始和结束位置的位置,替换它们之间的字符串,然后继续直到到达字符串的末尾。有更简单的方法吗?

1 个答案:

答案 0 :(得分:0)

您可以使用括号将初始字符串分解为子字符串,然后替换每个其他子字符串。

String[] substituteValues = {"the", "str", "other", "another"};
int substituteValuesIndex = 0;

String test = "Here is {var1} string called {var2}";

// split the string up into substrings
test = test.replaceAll("\\}", "\\{");
String[] splitString = test.split("\\{");

// now sub in your values
for (int k=1; k < splitString.length; k = k+2) {
    splitString[k] = substituteValues[substituteValuesIndex];
    substituteValuesIndex++;
}

String result = "";
for (String s : splitString) {
    result = result + s;
}