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