C# 从字符串末尾删除多个字符类型

C# 从字符串末尾删除多个字符类型,c#,string,C#,String,我有一个建立地址字段的循环,其中一些字段在字符串末尾可能是空的 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++) ret

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

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();

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

字符串的TrimEnd静态方法允许指定应修剪的字符


但是,在您的情况下,检查for循环中是否有空槽是有意义的,并在最后将结果字符串与string.Join(string separator,string[]parts)组合在一起。

如果要删除添加的内容,首先不要添加它们。另外,
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
StringBuilder sb=新建StringBuilder();
for(int i=0;i
您还应该避免在案例中使用字符串,而应使用StringBuilder。避免使用senseles格式-只需列表[iRow]是一个更好的选择

请尝试以下方法:

string result = string.Join(", ", 
                  list.Where(s => !string.IsNullOrEmpty(s)).ToArray());

我不喜欢做假设,但我会这样做,因为似乎你想保留“间隙”,直到你到达终点,在这种情况下,你应该使用TrimEnd。如果不是,则使用其他任何一个选项来避免首先添加空值

更准确地说,如果您的输出可以如下所示:

asd、aaa、qwe、123123、somevalue、, ,

然后,您必须循环并使用TrimEnd

否则,如果可以折叠字段,则可以预先排除空字段

asd,aaa,qwe,123123,somevalue

试试这个:

List<string> list = new List<string>(
    new string[]{"asd", "aaa", "qwe", "123123", "", null, "", null, ""});
return String.Join(", ", list.Where(i => !String.IsNullOrEmpty(i)).ToArray());
List List=新列表(
新字符串[]{“asd”、“aaa”、“qwe”、“123123”、“null”、“null”、“null”});
返回String.Join(“,”,list.Where(i=>!String.IsNullOrEmpty(i)).ToArray();

我意识到这很难理解,而且很浪费,但是(没有linq):


这段代码将产生一个额外的“,”,您应该在for循环后调用sb.Remove(sb.Length-2,2)。TrimEnd上的参数是一个ParamArray,您不需要新的char[]--returnValue=returnValue.TrimEnd(“”,’)@Nescio谢谢,我想在Split方法中,我经常使用char数组来剥离空值,所以我在这里写错了。不,你们没有。您有一个导致ArgumentOutOfRangeException的循环…这不是一个好的解决方案。最简单的方法是
YourString.TrimEnd(',','')
returnValue = returnValue.TrimEnd(' ', ',');
List<string> list = new List<string>(
    new string[]{"asd", "aaa", "qwe", "123123", "", null, "", null, ""});
return String.Join(", ", list.Where(i => !String.IsNullOrEmpty(i)).ToArray());
return string.Join(" ,",string.Join(", ",list.ToArray()).Split(", ", StringSplitOptions.RemoveEmptyEntries));