2013-12-19 59 views
-3

我想将逗号分隔的字符串格式化为没有空格的字符串,没有额外的逗号并删除c#中的空条目。字符串转换c#

string valueString = "sam, mike, , ,john , Tom and Jerry , " 

和预期的结果是字符串数组与修整值如下

string formattedString = "sam, mike, john, Tom and Jerry" 

逗号之后应该有一个空间( “”)转换成格式化的字符串

+3

你已经问过这个问题在这里[拆分逗号分隔字符串也删除空格和删除空条目(http://stackoverflow.com/问题/ 20662124/split-a-comma-separated-string-also-remove-white-spaces-and-remove-empty-entries)并接受提供的解决方案 –

回答

2

尝试这种情况:

string valueString = "sam, mike, , ,john , Tom and Jerry , "; 

var nonEmpty = from s in valueString.Split(',') 
    where !String.IsNullOrWhiteSpace(s) 
    select s.Trim(); 

string formattedString = nonEmpty.Join(", "); 

Console.WriteLine(formattedString); 
+1

而不是'!String.IsNullOrEmpty(s.Trim())' ,你可以使用'!string.IsNullOrWhiteSpace'。 –

+1

你想要string.Join(“,”,nonEmpty),不加入IEnumerable 。 – nawfal

2
var sb = new StringBuilder(); 
foreach (string s in valueString.Split(new { "," }, StringSplitOptions.RemoveEmptyEntries)) 
{ 
    sb.Append(s.Trim()); 
} 
string result = sb.ToString(); 
2

试试这个

string valueString = "sam, mike, , ,john , Tom and Jerry , "; 

var strOutput= from s in valueString.Split(',') 
       where !String.IsNullOrWhiteSpace(s.Trim()) 
       select s.Trim(); 

string formatString = string.Join(", ", strOutput); 

Console.WriteLine(formatString); 
0

又一变,现在用正则表达式

string valueString = "sam, mike, , ,john , Tom and Jerry , "; 
string formattedString = (new Regex(@"(\s*)(?<val>[^,]+)(\s*,)?").Replace(valueString,m=>{ 
      var res = m.Groups["val"].Value.Trim(); 
      return string.IsNullOrEmpty(res)? string.Empty : (res+", "); 
     })).Trim(", ".ToCharArray());