0

私が持っているのは、テキストボックスからユーザーの入力を受け取り、その末尾にピリオドを追加するプログラムです。私が解決しようとしている問題は、ユーザーが入力したものの最後にピリオドを付けた場合、そのピリオドを削除できるようにしたいということです。文字列置換メソッドを使用しようとしましたが、それは単一の文字に対してしか実行できません。次に考えたのは正規表現です。

私はこれを試しました:

finalString = Regex.Replace(finalString, "..", ".");

しかし、すべての文字をピリオドに置き換えただけです。隣り合った 2 つのピリオドを置換できる正規表現はありますか?

4

3 に答える 3

1

.特別な意味があるので、エスケープする必要があります\

finalString = Regex.Replace(finalString, "\\.\\.$", ".");

または単にそのままの記号を使用する

finalString = Regex.Replace(finalString, @"\.\.$", ".");

正規表現の最後に追加する$と、ピリオドの位置が文字列の最後の部分にあるかどうかがアサートされます。

于 2012-10-21T16:36:44.140 に答える
1

これらの文字を正規表現でリテラルとして使用する場合は、バックスラッシュでエスケープする必要があります。

左角括弧[、バックスラッシュ\、キャレット^、ドル記号$、ピリオドまたはドット.、縦棒またはパイプ記号|、疑問符?、アスタリスクまたはスター*、プラス記号+、左丸括弧(および右丸括弧)

よく読んだ

于 2012-10-21T16:42:14.610 に答える
1

.正規表現では、任意の文字に一致することを..意味します..あなたの場合、任意の2文字に一致し、それを.

このようにエスケープする必要があります\.

そのはず

finalString = Regex.Replace(finalString, @"\.\.", ".");

于 2012-10-21T16:44:47.650 に答える