代码之家  ›  专栏  ›  技术社区  ›  Adriaan Stander

从字符串结尾删除多个字符类型

  •  10
  • Adriaan Stander  · 技术社区  · 15 年前

    我有一个构建地址字段的循环,其中一些字段在字符串末尾可能是空的。

    List<string> list = new List<string>();
    
    //list can contain any number of values, some of which might be "" (empty string)
    
    string returnValue = "";
    for (int iRow = 1; iRow <= list.Count; iRow++)
        returnValue += String.Format("{0}, ", list[iRow]);
    
    returnValue = returnValue.Trim();
    

    我的输出是

    asd, aaa, qwe, 123123, , , , , 
    

    如何从字符串中删除尾随的“”?

    7 回复  |  直到 11 年前
        1
  •  25
  •   Danny Beckett    11 年前
    returnValue = returnValue.TrimEnd(' ', ',');
    
        2
  •  8
  •   Miha Markic    15 年前

    在这种情况下,还应避免使用字符串,而应使用StringBuilder。避免使用senseles格式-只使用list[irow]是更好的选择。

    改为尝试类似的操作:

    string result = string.Join(", ", 
                      list.Where(s => !string.IsNullOrEmpty(s)).ToArray());
    
        3
  •  2
  •   flq    15 年前

    字符串的trimend静态方法允许指定应修剪哪些字符。

    但是,在您的情况下,检查for循环中是否有空的槽是有意义的,最后用string.join(字符串分隔符,string[]部分)将得到的字符串组合在一起。

        4
  •  2
  •   Cecil Has a Name    15 年前

    如果要删除添加的内容,请不要首先添加。此外, StringBuilder 类型更适合连接多个字符串,因为它更节省内存。

    StringBuilder sb = new StringBuilder();
    
    for (int i = 0; i < list.Count; i++)
    {
        string rowValue = list[iRow];
        if (!string.IsNullOrEmpty(rowValue))
        {
            sb.Append(rowValue);
            sb.Append(", ");
        }    
    }
    
    // use sb.ToString() to obtain result
    
        5
  •  1
  •   Nescio    15 年前

    我不喜欢做假设,但我会这样做,因为看起来你想要保留“间隙”,直到你到达终点,在这种情况下,你应该使用trimend。如果没有,那么使用其他选项中的任何一个,以避免首先添加空值。

    更准确地说,如果您的输出看起来像:

    ASD,AAA,QWE,123123,,someValue, ,请

    然后你必须循环使用trimend。

    否则,如果可以折叠这些字段,则排除前面的空字段。

    ASD、AAA、QWE、123123、SomeValue

        6
  •  0
  •   Rubens Farias    15 年前

    试试这个:

    List<string> list = new List<string>(
        new string[]{"asd", "aaa", "qwe", "123123", "", null, "", null, ""});
    return String.Join(", ", list.Where(i => !String.IsNullOrEmpty(i)).ToArray());
    
        7
  •  0
  •   Al Option    11 年前

    我意识到这是相当难以阅读和浪费,但(没有LINQ):

    return string.Join(" ,",string.Join(", ",list.ToArray()).Split(", ", StringSplitOptions.RemoveEmptyEntries));