2010-12-11 9 views
1

私は&nbsp,<p>&nbsp;&nbsp;</p> and <br>を含む長い文字列を持っています。私はこれらのすべてのタグとスペースから自分の文字列をきれいにしたい。どのようにString.Replace()メソッドで行うことができます。私は現在別にやっていますが、動作していますが、replace()メソッドを使わずに一度にそれを行う方法があります。String.Replace()メソッドを使用して余分なスペースと多くのタグを削除します

String.Replace("&nbsp;","").Replace("<p>","").Replace("<br>","") 

それは私にクリーンなコードを与えることが、私は一般的な解決策を探しています私は効率的にそれを行う方法を、フィルタに複数のタグ(10〜20)を有していた場合、意味されます。

答えて

1

置き換えを使用すると、タグのリストを持っているように怒鳴る行うことができ、すべてに良いです:

foreach(var tag in tags) 
{ 
    str = str.Replace(tag, ""); 
} 
0

あなただけの目に、それは簡単にするために拡張メソッドを書くことができる - その今1を使用した場合-ライナー。

string[] token = { "foo", "bar" }; 
string text = "blaah foo bar text"; 

text = text.ReplaceAll(token, ""); 


public static class StringHelper 
{ 
    public static string ReplaceAll(this string text, 
            string[] token, 
            string replacement) 
    { 
     string newText = text; 

     foreach (string s in token) 
      newText = newText.Replace(s, replacement); 

     return newText; 
    } 
} 
2

あなたは、このようなtag1|tag2として、置き換え、およびRegex.Replace methodを使用するすべてのタグで構成された正規表現交番パターンを構築することができます。正規表現のメタキャラクタとして誤って解釈されないように、エスケープする必要があります。例えば

Regex.Replace(input, pattern, "", RegexOptions.IgnoreCase)

string input = "<p>Hello,&nbsp;World<br>Foo<br>Bar</p>"; 
string[] replaceItems = { "<p>", "&nbsp;", "<br>" }; 
if (replaceItems.Length > 0) 
{ 
    string pattern = 
     String.Join("|", replaceItems.Select(s => Regex.Escape(s)).ToArray()); 
    string result = Regex.Replace(input, pattern, String.Empty); 
    Console.WriteLine(result); 
} 
else 
{ 
    // nothing to replace 
    Console.WriteLine(input); 
} 

あなたはRegexOptions.IgnoreCaseオプション大文字と小文字を区別しません使用する、交換が必要な場合。

.NET 4.0では、ToArray()コールをドロップできます。文字列オブジェクトは不変であるためのStringBuilderを使用して、より効率的な代替品の数に応じて、文字列に置き換える使用して、すべての答え@

+0

Regexは簡単な解決策ではありませんが、確かにより拡張性があります – Machinarius

0
string[] items= { "<p>", "&nbsp;", "<br>" }; 

foreach (string itemtodelete in items) 
{ 
    test=test.Replace(itemtodelete,""); 
} 
1

var sb = new StringBuilder(input); 

var replaceItems = new[] { "<p>", "&nbsp;", "<br>" }; 
foreach (var replace in replaceItems) 
{ 
    sb.Replace(replace, String.Empty); 
} 

input = sb.ToString();