Java - 在字符串中的每个单词之前添加一个字符

时间:2021-03-25 03:54:15

标签: java regex string

我正在寻找一个函数,该函数在给定字符串中的每个已识别单词之前添加一个字符前缀。例如:当我传递字符串“(var1 + var2-var3 + 30)%var4”时,我必须期待“($var1 + $var2-$var3 + 30)%$var4”。在给定的字符串中,只有单词必须被识别并且必须以“$”为前缀。必须忽略所有数字、空格、运算符(+、-、*、/、%)。

1 个答案:

答案 0 :(得分:2)

OOTB,不存在任何此类功能。您可以定义一个使用正则表达式的函数,例如(?i)(?:[a-z_]\w+) 来识别可变词并用 \$$0 替换它们,其中 $0 指的是匹配(可替换参数)和 \$ 之前的前缀是 $

注意:我假设变量词可能包含下划线(即 _)。如果不是,请使用正则表达式 pattern(?i)(?:[a-z]\p{Alnum}+)。请注意,\w 包括字母、数字和下划线。

民主党:

public class Main {
    public static void main(String[] args) {
        // Test
        System.out.println(getString("(var1 + var2-var3 + 30)%var4"));
    }

    static String getString(String str) {
        return str.replaceAll("(?i)(?:[a-z_]\\w+)", "\\$$0");
    }
}

输出:

($var1 + $var2-$var3 + 30)%$var4

regex101 处正则表达式的解释:

enter image description here