2014-09-26 71 views
1

我与关键措辞模块,其中每个字结束与,并从字符串例如空间工作是如下:斯普利特和特定字符添加到C#字符串

如果字符串是

one man sitting with girl , baby girl , Smiling girl 

那么结果应该是

,one man sitting with girl,baby girl,Smiling girl, 

我想这

string[] strArray = str15.Split(new char[] { ',', ';' }); 
     if (strArray.Length >= 1) 
      { 
       foreach (string str3 in strArray) 
       { 
        if (str3 != string.Empty) 
        { 
         strr1 = strr1 + str3 + ","; 

        } 
       } 
      } 

但无法从字符串中删除空格。

+0

斯普利特 - >剪裁 - >加入 – 2014-09-26 09:39:54

+0

只是'斯普利特( '')'和'TRIM()'每一项,那么你可以'Join'这些 – 2014-09-26 09:40:17

+3

线索10解答! – DavidG 2014-09-26 09:40:36

回答

4

你想要做的第一件事是tokenise字符串,使用Split()

string input = "some words , not split , in a sensible , way"; 
string[] sections = input.Split(','); 

这给你用逗号和分割字符串数组,这将是这个样子:

"some words " 
" not split " 
" in a sensible " 
" way" 

现在要修剪那些空间了。 string类有一个很好的小函数Trim(),它从字符串的开头和结尾删除所有空白字符(空格,制表符等)。

for (int i = 0; i < sections.Length; i++) 
    sections[i] = sections[i].Trim(); 

现在你有一个字符串像这样的数组:

"some words" 
"not split" 
"in a sensible" 
"way" 

接下来,您想用逗号分隔符来加入他们重新走到一起。

string result = string.Join(",", sections); 

这给你沿着此线的东西:

"some words,not split,in a sensible,way" 

最后,你可以在开始添加逗号和结束:

result = "," + result + ","; 

当然,这ISN这是最干净的做法。这只是描述各个步骤的简单方法。您可以结合这一点使用起来LINQ分机全部:

string result = "," + string.Join(",", input.Split(',').Select(s => s.Trim())) + ","; 

这需要输入,将其分解的逗号分隔符,然后在列表中每个项目执行lambda表达式s => s.Trim(),它选择的修剪版本每个元素的字符串。然后将得到的枚举传回string.Join(),然后在开始和结束处添加两个逗号。它具有与上述步骤相同的功能,但它只有一行。

+0

downvoter是否愿意解释他们的推理,以便我可以解决他们注意到的任何问题? – Polynomial 2014-09-26 09:56:23

+1

您可以从我那里获得+1,因为这不仅仅是正确的,而是完全解释它。 – DavidG 2014-09-26 09:57:56

+0

感谢您的精彩解释@Polynomial,我真的很感激你的回答:) – Gitz 2014-09-26 10:02:42

-1

Split您的字符串并且通过消除白色空间再加入它:

var input = "one man sitting with girl , baby girl , Smiling girl"; 

var output = string.Join(",", input.Split(',').Select(x => x.Trim())); 

// If you wanna enclose it with commas 
output = string.Format(",{0},",output); 
+0

这不产生“,一个男人坐在女孩,女婴,微笑女孩,”。 – brz 2014-09-26 09:44:37

+0

@brz如果您将缺少的')'添加到末尾(以及','前缀) – DavidG 2014-09-26 09:45:50

+0

@DavidG以及缺少的'''后缀,它会执行此操作。是的,如果! – brz 2014-09-26 09:47:51

0

这应该工作:

 string test = "one man sitting with girl , baby girl , Smiling girl"; 
     Regex regex = new Regex(@"\s+,\s+"); 

     string result = regex.Replace(test, ","); 
+0

认真吗?正则表达式? – Polynomial 2014-09-26 09:43:13

+2

@Polynomial有什么问题吗? – 2014-09-26 09:45:13

+0

是的,我会这样做,因为如果需求变得更加困难,这样你就可以变得灵活...... Regex仍然是我的选择。 – Greenhorn 2014-09-26 09:54:02

0

试试这个:

var input = "one man sitting with girl , baby girl , Smiling girl"; 

    var output = string.Join(",", input.Split(',').Select(x => x.Trim())); 

    output = string.Concat(",", output, ","); 
相关问题