在C#中过滤逗号分隔的String

Hoq*_*que 3 .net c# arrays string c#-2.0

我有一个动态字符串值,可能包含这样的值

"Apple   ,Banana, , , ,  Mango  ,Strawberry  , " 
Run Code Online (Sandbox Code Playgroud)

我想过滤这个字符串

"Apple,Banana,Mango,Strawberry". 
Run Code Online (Sandbox Code Playgroud)

我尝试使用以下代码,它的工作原理.

有没有更好的方法在C#(.NET 2.0)中实现相同的目标?

/// <summary>
/// Convert "Comma Separated String" to "Comma Separated String"
/// </summary>
/// <param name="strWithComma">String having values separated by comma</param>
/// <returns>String separated with comma</returns>
private String CommaSeparatedString(String strWithComma)
{
    String rtn = String.Empty;

    List<String> newList= new List<string>();

    if (String.IsNullOrEmpty(strWithComma))
    {
        return rtn;
    }

    String[] strArray = strWithComma.Split(",".ToCharArray());


    if (strArray == null || strArray.Length == 0)
    {
        return rtn;
    }

    String tmpStr = String.Empty;
    String separator=String.Empty;
    foreach (String s in strArray)
    {
        if (!String.IsNullOrEmpty(s))
        {
            tmpStr =s.Replace(Environment.NewLine, String.Empty);
            tmpStr = tmpStr.Trim();
            if (!String.IsNullOrEmpty(tmpStr))
            {
                newList.Add(tmpStr);
            }
        }
    }

    if (newList != null && newList.Count > 0)
    {

        rtn = String.Join(",", newList.ToArray());
    }
    return rtn;

}
Run Code Online (Sandbox Code Playgroud)

ojl*_*ecd 7

你也可以使用正则表达式:

string str = @"Apple   ,,Banana, , , ,  Mango  ,Strawberry  , ";
string result = Regex.Replace(str, @"(\s*,\s*)+", ",").TrimEnd(',');
Run Code Online (Sandbox Code Playgroud)

  • 即使对于"多个单词"和NewLine场景,也可以使用+1作为解决方案 (4认同)

Mor*_*ner 6

我相信以下应该可以解决任何.NET版本:

string[] TrimAll( string[] input )
{
    var result = new List<string>();
    foreach( var s in input )
        result.Add( s.Trim() );
    }
    return result.ToArray();
}

var delimiters = new [] { ",", "\t", Environment.NewLine };
string result = string.Join(",", TrimAll( input.Split( delimiters, StringSplitOptions.RemoveEmptyEntries ) ) );
Run Code Online (Sandbox Code Playgroud)

编辑:更新以处理空格,制表符和换行符.