【问题标题】:String conversion c# [duplicate]字符串转换c# [重复]
【发布时间】:2013-12-19 05:45:02
【问题描述】:

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

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

并且预期结果是具有如下修剪值的字符串数组

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

格式化字符串后逗号(“,”)后面应该有一个空格

【问题讨论】:

标签: linq lambda


【解决方案1】:

试试这个:

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

【讨论】:

  • 你可以使用!String.IsNullOrEmpty(s.Trim()),而不是!string.IsNullOrWhiteSpace。
  • 你想要 string.Join(", ", nonEmpty),而不是加入 IEnumerable。
【解决方案2】:
var sb = new StringBuilder();
foreach (string s in valueString.Split(new { "," }, StringSplitOptions.RemoveEmptyEntries))
{
    sb.Append(s.Trim());
}
string result = sb.ToString();

【讨论】:

    【解决方案3】:

    试试这个

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

    【讨论】:

      【解决方案4】:

      另一个变体,现在使用正则表达式

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-05-17
        • 2015-01-10
        • 2013-12-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多