Java:从一个字符串值替换多个字符串模式

标签 java regex foreach pattern-matching

我正在努力让这个工作正常。

我的正则表达式模式为:".*(${.*}).*"

还有一个字符串变量myVar = "name = '${userName}'/pass = '${password}'"

我有一个存储值的 HashMap ,在本例中,“${userName}”的值为“John Doe”,“${password}”的值为“secretpwd”。

如何循环 myVar 中找到的所有匹配项(在本例中为“用户名”和“密码”)? 然后我可以循环找到的每个匹配项并从 HashMap 中请求它们对应的值。

谢谢!

最佳答案

您可以使用例如以下代码:

Pattern p = Pattern.compile("\\$\\{.*?\\}");
while (true) {
    Matcher m = p.matcher(myVar);
    if (!m.find()) {
        break;
    }
    String variable = m.group();
    String rep = hash.get(variable);
    myVar = m.replaceFirst(rep);
}

请注意,我调整了正则表达式以满足您的要求。

关于Java:从一个字符串值替换多个字符串模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7293465/

相关文章:

启动方法中的 JavaFX InvokingTargetException

java - 将字符串拆分为矩阵数组

Powershell 不会循环遍历所有对象

php - 使用php mysql将数组设置为数组中的列名

r - "foreach"并行循环返回 <NA>s

java - 在jdk1.7中无法编译运行HelloWorld

Java 正则表达式查找方法的参数

java - MYSQL插入查询不更新数据到JAVA表中

python - 如何在 Python 中始终如一地将 "3.71B"和 "4M"等字符串转换为数字?

Javascript 拆分字符串