ハイフンで区切られた姓の文字列を作成しています。時々、そこに空白が入ります。最終結果からすべての空白を削除する必要があります。
動作するサンプル文字列:
アンダーソン-リードスミス
(アンダーソンの後にスペースはありません):
アンダーソン・リード・スミス
姓の文字列は、文字列変数LastNameにあります。
私は正規表現を使用しています:
Regex.Replace(LastName, @"[\s+]", "");
この結果は次のとおりです。
アンダーソン-リードスミス。
私も試しました:
Regex.Replace(LastName, @"\s+", "");
そして
Regex.Replace(LastName, @"\s", "");
何が間違っていますか?
RegEx
の代わりにReplace
を使用して、単純なことを行います。
LastName = LastName.Replace(" ", String.Empty);
Regex.Replace
は最初の引数を変更しません(.NETでは文字列が不変であることを思い出してください)
Regex.Replace(LastName, @"\s+", "");
LastName
文字列は変更されません。次のように呼び出す必要があります。
LastName = Regex.Replace(LastName, @"\s+", "");
3つの正規表現はすべて機能していました。ただし、最初の正規表現はすべてのプラス文字も削除しますが、これは意図的ではないと思います。
正規表現は必要ありません。これにより、タブや改行なども削除されます
var newstr = String.Join("",str.Where(c=>!char.IsWhiteSpace(c)));
ホワイトスペース文字:0009 , 000a , 000b , 000c , 000d , 0020 , 0085 , 00a0 , 1680 , 180e , 2000 , 2001 , 2002 , 2003 , 2004 , 2005 , 2006 , 2007 , 2008 , 2009 , 200a , 2028 , 2029 , 202f , 205f , 3000
。
REGEXを使用すると、文字列内のスペースを削除できます。
次の名前空間は必須です。
using System.Text.RegularExpressions;
構文:
Regex.Replace(text, @"\s", "")
これを行う最も高速で一般的な方法(行終端記号、タブも処理されます)。 Regexの強力な機能は、この問題を解決するために実際には必要ありませんが、Regexはパフォーマンスを低下させる可能性があります。
new string
(stringToRemoveWhiteSpaces
.Where
(
c => !char.IsWhiteSpace(c)
)
.ToArray<char>()
)
OR
new string
(stringToReplaceWhiteSpacesWithSpace
.Select
(
c => char.IsWhiteSpace(c) ? ' ' : c
)
.ToArray<char>()
)