我使用Java,我想做的事情非常简单:
我想获得特定单词的第二个字符
测试此字符是否等于' a'将其替换为0,如果等于' b'将其替换为' 1'
表达式应该在一行中(使用正则表达式)
类似的东西:
input = input.match(/^.(.)/) == "a"
? input.replace(/^.(.)/, "0") : input.match(/^.(.{1})/) == "b"
? input.replace(/^.(.)/, "1") : input
我想知道是否有任何优化和干净的方法来做到这一点。提前谢谢。
答案 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");