用 java 中的特定字符串列表替换字符串
Replace a String with specific list of strings in java
这里是例子,
public class Demo{
public static void main (String args[]) {
List<String> varList = Arrays.asList("VAR_TEMP", "VAR_TEMPA", "VAR_TEMPB");
String operation = "var temp = VAR_TEMPB";
for (String var : varList) {
operation = (operation.contains(var))
? operation.replace(var, "'HI'")
: operation;
}
System.out.println("Final operation : " + operation);
}
}
我正在尝试用字符串列表替换操作字符串。
我期待以上代码的响应,
Final operation : var temp = HI
但它给出了如下响应,
Final operation : var temp = 'HI'B
在迭代字符串列表时,它采用第一个匹配项("VAR_TEMP")
,而不是采用完全匹配项("VAR_TEMPB")
。
您能否建议实现此预期响应的方法。
列表声明为
List<String> varList = Arrays.asList("VAR_TEMP", "VAR_TEMPA", "VAR_TEMPB");
操作是String operation = "var temp = VAR_TEMPB";
循环的作用如下:
- 操作(var temp = VAR_TEMPB)是否包含VAR_TEMP?是
- 现在的操作是 var temp = 'HI'B
- 操作 (var temp = 'HI'B) 是否包含 VAR_TEMPA? No.操作不变
- 操作 (var temp = 'HI'B) 是否包含 VAR_TEMPB? No.操作不变
当您表达精确匹配模式时,一个简单的解决方案应该是使用正则表达式。例如:
class Scratch {
public static void main(String[] args) {
final List<Pattern> varList =
Arrays.asList(
Pattern.compile("(VAR_TEMP)$"),
Pattern.compile("(VAR_TEMPA)$"),
Pattern.compile("(VAR_TEMPB)$"));
String operation = "var temp = VAR_TEMPB";
Matcher tmp;
for (Pattern item : varList) {
tmp = item.matcher(operation);
operation = tmp.find() ? operation.replace(tmp.group(), "'HI'") : operation;
}
System.out.println("Final operation : " + operation);
}
}
这里是例子,
public class Demo{
public static void main (String args[]) {
List<String> varList = Arrays.asList("VAR_TEMP", "VAR_TEMPA", "VAR_TEMPB");
String operation = "var temp = VAR_TEMPB";
for (String var : varList) {
operation = (operation.contains(var))
? operation.replace(var, "'HI'")
: operation;
}
System.out.println("Final operation : " + operation);
}
}
我正在尝试用字符串列表替换操作字符串。
我期待以上代码的响应,
Final operation : var temp = HI
但它给出了如下响应,
Final operation : var temp = 'HI'B
在迭代字符串列表时,它采用第一个匹配项("VAR_TEMP")
,而不是采用完全匹配项("VAR_TEMPB")
。
您能否建议实现此预期响应的方法。
列表声明为
List<String> varList = Arrays.asList("VAR_TEMP", "VAR_TEMPA", "VAR_TEMPB");
操作是String operation = "var temp = VAR_TEMPB";
循环的作用如下:
- 操作(var temp = VAR_TEMPB)是否包含VAR_TEMP?是
- 现在的操作是 var temp = 'HI'B
- 操作 (var temp = 'HI'B) 是否包含 VAR_TEMPA? No.操作不变
- 操作 (var temp = 'HI'B) 是否包含 VAR_TEMPB? No.操作不变
当您表达精确匹配模式时,一个简单的解决方案应该是使用正则表达式。例如:
class Scratch {
public static void main(String[] args) {
final List<Pattern> varList =
Arrays.asList(
Pattern.compile("(VAR_TEMP)$"),
Pattern.compile("(VAR_TEMPA)$"),
Pattern.compile("(VAR_TEMPB)$"));
String operation = "var temp = VAR_TEMPB";
Matcher tmp;
for (Pattern item : varList) {
tmp = item.matcher(operation);
operation = tmp.find() ? operation.replace(tmp.group(), "'HI'") : operation;
}
System.out.println("Final operation : " + operation);
}
}