如何使用java正则表达式替换符号中间的字符

输入 A 替换A为2 例如替换内容为: A+AA+AB*A+C 结果为 2+AA+AB*2+C
输入 M 替换M为2 例如替换内容为: M*Math.pow(M,2) 结果为 2*Math.pow(2,2)
我想把数学符号中间的匹配内容换成数字 这样便于计算使用
这样的正则表示该怎么写 求解答

3个回答

javascript:

     var reg = /^[A-Za-z]/;
    var s = 'A+AA+AB*A+C';
    console.log(s.replace(reg, 2));
    s = 'M*Math.pow(M,2)';
    console.log(s.replace(reg, 2));

java:
public static void main(String[] args) {
String reg = "^[A-Za-z]";
String s = "A+AA+AB*A+C";
s = s.replaceAll(reg, "2");
System.out.println(s);
s = "M*Math.pow(M,2)";
s = s.replaceAll(reg, "2");
System.out.println(s);
}

希望对你有帮助...

wyzdeng
wyzdeng 您的结果是 2+AA+AB*A+C 2*Math.pow(M,2) 但是期望结果是 2+AA+AB*2+C 2*Math.pow(2,2)
接近 3 年之前 回复

您的结果是
2+AA+AB*A+C
2*Math.pow(M,2)
但是期望结果是
2+AA+AB*2+C
2*Math.pow(2,2)

不好意思,没审清楚题;
下面这个能满足你的要求了:

javascript:

 function replaceMe(orig, replaceChar, replaceValue) {
        var reg_head = new RegExp('^' + replaceChar + '([\\+\\-\\*\\\\])');
        var reg_middle = new RegExp('([\\+\\-\\*\\\\\\(])' + replaceChar + '([\\+\\-\\*\\\\\\),])', 'g');
        var reg_end = new RegExp('([\\+\\-\\*\\\\])' + replaceChar + '$');
        return orig.replace(reg_head, replaceValue + '$1').replace(reg_middle, '$1' + replaceValue + '$2').replace(reg_end, '$1' + replaceValue);
    }
    console.log(replaceMe('A+AA+AB*A+C', 'A', 2));
    console.log(replaceMe('M*Math.pow(M,2)', 'M', 2));

java:

 /**
     *
     * @param orig  -- 为空会抛出空指针异常
     * @param replaceChar
     * @param replaceValue
     * @return
     */
    public static String getReplaceCalc(String orig, String replaceChar, String replaceValue) {
        return orig.replaceAll("^" + replaceChar + "([\\*\\+\\-\\*\\\\])", replaceValue + "$1")
                .replaceAll("([\\+\\-\\*\\\\\\(])" + replaceChar + "([\\+\\-\\*\\\\\\),])","$1" + replaceValue + "$2")
                .replaceAll("([\\+\\-\\*\\\\])" + replaceChar + "$", "$1" + replaceValue)
                ;
    }

    public static void main(String[] args) {
        System.out.println(getReplaceCalc("A+AA+AB*A+C", "A", "2"));
        System.out.println(getReplaceCalc("M*Math.pow(M,2)", "M", "2"));
        System.out.println(getReplaceCalc("A+AA+AB*A+C", "C", "5"));
        System.out.println(getReplaceCalc("M*Math.pow(M,2)", "M", "4"));
    }
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐