如何用逗号替换第一次出现的空格?

时间:2014-12-18 07:20:51

标签: c# .net regex string

我有字符串:

string sku= "plmca60     5";

我只是想用逗号替换第一个空格。因此我尝试了:

sku.replace(" ",",");

但它给了我:

sku="plmca60,,,,,5";

因为字符串中有五个空格。但我想替换第一次出现的空格,如;

sku="plmca60,    5"

我该怎么做?

8 个答案:

答案 0 :(得分:5)

首先,String.Replace method 1 将您的字符串作为plmca60,,,,,5返回,因为来自文档;

  

返回一个新字符串,其中包含指定字符串的所有出现次数   当前实例将替换为另一个指定的字符串。

你不需要正则表达式。

您可以使用String.IndexOf(string)获取空白的第一个索引以及一点点RemoveInsert方法组合。

  

报告指定的第一个出现的从零开始的索引   在这个例子中的字符串

string sku = "plmca60     5";
int index = sku.IndexOf(" ");
sku = sku.Remove(index, 1).Insert(index, ",");
Console.WriteLine(sku);

结果将是;

plmca60,    5

这里有 demonstration

1:请记住,它是Replace,而不是replace。 C#是区分大小写的语言。

答案 1 :(得分:3)

您可以使用下面的捕获组,

@"^(\S*)\s"

OR

@"^(\S*) "

将匹配的空格替换为

$1,

DEMO

\S匹配非空白字符。 \S*匹配零个或多个非空白字符。 ^声称我们刚开始。

<强>代码:

string sku= "plmca60 5";
string result = Regex.Replace(sku, @"^(\S*) ", "$1,");
Console.WriteLine(result);
Console.ReadLine();

IDEONE

答案 2 :(得分:2)

使用Regex.Replace

var regex = new Regex(Regex.Escape(" "));
var newText = regex.Replace("plmca60     5", ",", 1);

答案 3 :(得分:1)

不是优化的解决方案,但它有效,

string sku = "plmca60     5";
string[] skyArr = sku.Split(' ');
skyArr[1] = ",";
string resultString = "";
foreach (string str in skyArr) 
{
     if (str == "")
         resultString += " ";
     else
         resultString += str;
     }
}
Console.WriteLine(resultString);

答案 4 :(得分:1)

您可以使用&#34;,&#34;替换所有空格。例如:

sku = Regex.Replace(sku, @"\s+", ", ");

答案 5 :(得分:1)

            string sku = "plmca60     5";
            int pos = sku.IndexOf(" ");
            char[] a = sku.ToCharArray();
            a[pos]=a[pos].ToString().Replace(" ", ",").ToCharArray()[0];
            var result = new string(a);

这是肮脏的方式。同时试图找出更短的做法。

答案 6 :(得分:1)

我会在捕获组中捕获1个带有0或更多空格的空格。这样你就可以用逗号和capture-group的内容替换它(这是第一个之后的任何空格)

Regex.Replace(input, @"\s(\s*)", ",$1");

<强> Online demo

答案 7 :(得分:0)

两行版本:

string sku = "plmca60     5";
Console.WriteLine(sku.Insert(sku.IndexOf(" ")).Remove(sku.Index(" "));