[.NET/C#].NET/C#应用程序开发中如何将多个空格替换成一个(单个)空格呢?

C#开发 作者: Rector 20阅读 0评论 0收藏 收藏本文

郑重申明:本文未经许可,禁止任何形式转载

问题描述

如题,在.NET/C#应用程序开发中,如何将多个空格替换成一个(单个)空格呢?

比如有如下的字符串:

1 2 3  4    5

期望将多个空格替换成单个空格后的结果为:

1 2 3 4 5

使用C#应该如何实现呢?

方案一

使用正则表达式,如下:

RegexOptions options = RegexOptions.None;
Regex regex = new Regex("[ ]{2,}", options);     
tempo = regex.Replace(tempo, " ");

方案二

另一种正则表达式的正则写法,如下:

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

方案三

使用string.Join()string.Split()方法,如下:

string xyz = "1   2   3   4   5";
xyz = string.Join( " ", xyz.Split( new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries ));

方案四

使用LINQ实现,如下:

var list = str.Split(' ').Where(s => !string.IsNullOrWhiteSpace(s));
 str = string.Join(" ", list);

方案五

使用for循环遍历字符串中的每个字符,以下为一个静态扩展方法:

public static class StringExtension
{
    public static String ReduceWhitespace(this String value)
    {
        var newString = new StringBuilder();
        bool previousIsWhitespace = false;
        for (int i = 0; i < value.Length; i++)
        {
            if (Char.IsWhiteSpace(value[i]))
            {
                if (previousIsWhitespace)
                {
                    continue;
                }

                previousIsWhitespace = true;
            }
            else
            {
                previousIsWhitespace = false;
            }

            newString.Append(value[i]);
        }

        return newString.ToString();
    }
}

方案六

另一个使用遍历字符串每个字符的实现方式,如下:

public static string FilterWhiteSpaces(string input)
{
    if (input == null)
        return string.Empty;

    StringBuilder stringBuilder = new StringBuilder(input.Length);
    for (int i = 0; i < input.Length; i++)
    {
        char c = input[i];
        if (i == 0 || c != ' ' || (c == ' ' && input[i - 1] != ' '))
            stringBuilder.Append(c);
    }
    return stringBuilder.ToString();
}

阅读了该文章的人还浏览了...

本文永久链接码友网 » [.NET/C#].NET/C#应用程序开发中如何将多个空格替换成一个(单个)空格呢?

发布于: 2018-11-28 10:47:39
分享扩散: