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