0

私が解決しようとしている問題は次のとおりです。

文字列を指定すると、最初の 2 文字のいずれかまたは両方が「x」の場合、それらの「x」文字を除いた文字列を返し、それ以外の場合は文字列を変更せずに返します。これは見た目よりも少し難しいです。

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

そして、私が持っている正規表現ソリューションは...機能しません。単語から最初xの単語を削除することはできますが、2 番目の単語を削除するのxは非常に面倒です。この例では、正規表現で、他の文字を邪魔することなく 2 番目の文字を削除できるかどうかを知りたいです。

私が試したこと:

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

これは単に最初の 2 文字を""意図しない に置き換えるだけです。2番目の文字のみを置き換えたいです。

4

2 に答える 2

2

正規表現に基づくソリューションである必要がない場合は、より単純な方法を使用できます:)

文字列を 2 つの部分に分割します (文字列に 3 文字以上が含まれる場合)。最初の部分は最初の 2 文字で、2 番目の部分は残りです。最初の部分からすべての「x」を削除し、2 番目の部分を結果に追加します。

于 2012-09-12T22:24:18.987 に答える
1

最初の文字が「x」ではないことを考慮に入れる必要があります。

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