如何使用正则表达式替换String?

时间:2016-12-20 11:45:39

标签: java regex

我使用Java,我想做的事情非常简单:

  • 我想获得特定单词的第二个字符

  • 测试此字符是否等于' a'将其替换为0,如果等于' b'将其替换为' 1'

  • 表达式应该在一行中(使用正则表达式)

类似的东西:

input = input.match(/^.(.)/) == "a" 
? input.replace(/^.(.)/, "0") : input.match(/^.(.{1})/) == "b" 
? input.replace(/^.(.)/, "1") : input

我想知道是否有任何优化和干净的方法来做到这一点。提前谢谢。

3 个答案:

答案 0 :(得分:0)

如果我理解正确,你可以尝试一下。

input.replaceFirst(/^(.)a/, '$10').replaceFirst(/^(.)b/,'$11')

含义: ^字符串的开头 (.)匹配1个字符并捕获

在替换

中使用该捕获

答案 1 :(得分:0)

使用此代码检查可能会对您有所帮助。

    StringBuilder str = new StringBuilder("aqbcdefag");
    Pattern pat = Pattern.compile("^(.)(a|b){1}.*");
    Matcher m = pat.matcher(str);
    while(m.find()){
        System.out.println(m.start()+"  :  "+m.group(2));
        if(m.group(2).toString().equals("a")){
            str.replace(1, 1, "0");
        }else if(m.group(2).toString().equals("b")){
            str.replace(1, 1, "1");
        }
    }
    System.out.println(str);

答案 2 :(得分:0)

这似乎有效:

str.replace(/^a/, "0").replace(/^b/, "1");