2013-05-02 4 views
32

ハイフンで区切られた姓の文字列を作成しています。ときどき空白がそこに捉えられることがあります。私は最終結果からすべての空白を削除する必要があります。正規表現でC#文字列の空白をすべて削除します

サンプル列上で動作するように:

アンダーソン-Reed・スミス

それは(アンダーソンの後にスペースなし)として終わる必要があります:

アンダーソン、Reed-スミス

姓が文字列である可能なLastName。

私は正規表現を使用しています:

Regex.Replace(LastName, @"[\s+]", ""); 

この結果は次のとおりです。

アンダーソン-Reed・スミス。

私も試してみました:

Regex.Replace(LastName, @"\s+", ""); 

Regex.Replace(LastName, @"\s", ""); 

を私が間違っているのか?

+0

名は、文字列のデータのみである場合は、正規表現を必要としません。それ以外の場合はおそらく( - | - | - ) – Evo510

答えて

114

LastName = LastName.Replace(" ", String.Empty); 
+3

これ。私は今この回答に投票するだろうが、私は今日の投票限度に達している。 – Renan

+1

制限があることを知らなかった! –

+4

@レナン、明日戻ってくるupvote :) – Gabe

11

正規表現の必要はありません。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:これはまた、改行など、

var newstr = String.Join("",str.Where(c=>!char.IsWhiteSpace(c))); 

空白文字をタブを削除します。代わりに、単純な何かのためRegEx使用Replace

+4

問題があります。正規表現でそれを解決したい。今私は2つの問題があります。それをLINQで解決してください。まだ2つの問題:-) –

+1

@JuliánUrbanoはいRegexは問題を抱えているかもしれませんが、私はLinqに対して同じことを言うことはできません。 – I4V

+1

@JuliánUrbano、それは特定のAPIなので何も解決したくないはずです。たとえ本質的には、はるかに簡単かつ迅速に解決することができますが、あまりにも多くの質問がこのサイトでLINQの回答で回答されています。最適なソリューションを選んでください。 –

44

Regex.Replace最初の引数(リコール文字列が.NETで不変です)ので、呼び出しを

Regex.Replace(LastName, @"\s+", ""); 

葉変更されることはありませんLastNameの文字列は変更されません。

LastName = Regex.Replace(LastName, @"\s+", ""); 

3つの正規表現がすべて機能しているはずです。しかし、最初の正規表現は、すべてのプラス文字も削除します。私はそれが意図的ではないと思います。

-1

以下は、ファイル名の空白を指定されたURLに置き換え、また文字列を使用して削除するコードです。代わりに "〜"

if (!string.IsNullOrEmpty(url)) 
      { 
      string origFileName = Path.GetFileName(url); 
      string modiFileName = origFileName.Trim().Replace(" ", "~"); 
      url = url.Replace(origFileName , modiFileName); 
      } 
      return url; 
+0

Opは_ "すべての空白**を削除する必要があります。" "_、' \ s'を使用しました。しかし、これは '' ''スペースのみを扱い、大部分は関連していません。 'Trim()'は先行するスペースとトレーリングするスペースだけを処理します。私は合うとは思わない。 –

-1

あなたは、単にトリム()メソッドこの(行を行うには

Text='<%# Eval("FieldDescription").ToString().Trim() %>' 

OR

string test = "Testing "; 
test.Trim(); 
+2

彼は先頭と末尾のスペースだけでなくすべてのスペースを削除する必要があります –

0

最速と一般的な方法を使用することができるときなぜ正規表現を使用しての空ターミネータ、タブも同様に処理されます)。 Regexの強力な機能は、この問題を解決するために本当に必要ではありませんが、Regexはパフォーマンスを低下させる可能性があります。

     new string 
          (stringToRemoveWhiteSpaces 
           .Where 
           (
            c => !char.IsWhiteSpace(c) 
           ) 
           .ToArray<char>() 
          ) 

OR

     new string 
          (stringToReplaceWhiteSpacesWithSpace 
           .Select 
           (
            c => char.IsWhiteSpace(c) ? ' ' : c 
           ) 
           .ToArray<char>() 
          ) 
関連する問題