0

我试图解决的问题是:

给定一个字符串,如果前 2 个字符中的一个或两个是 'x',则返回没有那些 'x' 字符的字符串,否则返回原样的字符串。这比看起来要难一些。

withoutX2("xHi") → "Hi" 
withoutX2("Hxi") → "Hi"
withoutX2("Hi") → "Hi"

而我拥有的正则表达式解决方案......不起作用。我可以x从单词中删除第一个,但删除第二x个真的很痛苦。在这个例子中,我想知道是否可以在正则表达式中删除第二个字符而不干扰其他字符。

我尝试过的事情:

return str.replaceFirst("^.x", "");

这只是简单地将前两个字母替换为"",这不是有意的。我只想替换第二个字符。

4

2 回答 2

2

如果它不必是基于正则表达式的解决方案,您可以使用更天真的方式:)

将字符串拆分为两部分(如果字符串包含两个以上的字符)。第一部分将是它的前两个字符,第二部分是休息。从第一部分中删除所有“x”并将第二部分添加到结果中。

于 2012-09-12T22:24:18.987 回答
1

您应该允许第一个字母不是“x”:

str.replaceFirst("^xx|^(.{0,1})x", "$1")
于 2012-09-12T22:09:16.927 回答