当我执行下面的代码时,文字被替换两次
public void obify("CREATENEWABCDEFGHTNEW"){
String _obiText=_obi;
_obiText=_obiText.replaceAll("A","OBA");
_obiText=_obiText.replaceAll("E","OBE");
_obiText=_obiText.replaceAll("I","OBi");
_obiText=_obiText.replaceAll("O","OBO");
_obiText=_obiText.replaceAll("U","OBU");
System.out.println(_obiText);
}
预期产量:CROBEOBATOBENOBEWOBABCDOBEFGHTNOBEW;用OB'Vowel Literal'替换所有元音 实际输出:CROBOBEOBOBATOBOBENOBOBEWOBOBABCDOBOBEFGHTNOBOBEW,这是一个不受欢迎的和未被发现的。
是否还有其他Java函数可以执行我打算执行的任务。
答案 0 :(得分:4)
如何替换元音?
_obiText = _obiText.replaceAll("[AEIOU]","OB$0");
答案 1 :(得分:3)
看看你在做什么:
_obiText=_obiText.replaceAll("A","OBA");
这里用“OBA”替换所有“A”。很好,效果很好。让我们继续。
_obiText=_obiText.replaceAll("E","OBE");
_obiText=_obiText.replaceAll("I","OBi");
好吧,多一点......
_obiText=_obiText.replaceAll("O","OBO");
在这里你搞砸了。你用“OBx”替换了所有东西,x是元音。当然,你和替代者所写的“O”也是如此。所以你得到的文本比预期的要长。解决方案?首先将“O”替换为“OBO”,然后替换其他所有内容,然后就可以了。
PD:你可以说你的结果是不受欢迎的,因为它不是你想要它做的,但不是意料之外的,因为如果你阅读并理解完全预期的代码。