使用String.Replace()方法删除多余的空格和许多标记

时间:2010-12-11 12:59:21

标签: c# .net asp.net

我有一个包含&nbsp,<p>&nbsp;&nbsp;</p> and <br>的长字符串。我想从所有这些标签和空格中清除我的字符串。如何使用String.Replace()方法完成。我现在正在单独做,它正在工作但有一种方法可以立即执行,没有replace()方法。

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

它给了我干净的代码,但我正在寻找一个通用的解决方案,意味着如果我有更多的标签(10到20)来过滤,那么如何有效地做到这一点。

5 个答案:

答案 0 :(得分:2)

您可以构建由要替换的所有标记组成的正则表达式替换模式,例如tag1|tag2,并使用Regex.Replace method。您应该转义它们以防止任何字符被错误地解释为正则表达式元字符。

例如:

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选项:Regex.Replace(input, pattern, "", RegexOptions.IgnoreCase)

在.NET 4.0中,您可以放弃ToArray()电话。

答案 1 :(得分:1)

替换是好的,你可以有一个标签列表,如下所示:

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

答案 2 :(得分:1)

@所有答案都使用替换字符串,取决于替换次数,使用StringBuilder更有效,因为字符串对象是不可变的。

var sb = new StringBuilder(input);

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

input = sb.ToString();

答案 3 :(得分:0)

你可以写一个扩展方法,让眼睛变得容易 - 当使用它现在是一个单行时。

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;
    }
}

答案 4 :(得分:0)

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

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