我有字符串:
string sku= "plmca60 5";
我只是想用逗号替换第一个空格。因此我尝试了:
sku.replace(" ",",");
但它给了我:
sku="plmca60,,,,,5";
因为字符串中有五个空格。但我想替换第一次出现的空格,如;
sku="plmca60, 5"
我该怎么做?
答案 0 :(得分:5)
首先,String.Replace
method 1 将您的字符串作为plmca60,,,,,5
返回,因为来自文档;
返回一个新字符串,其中包含指定字符串的所有出现次数 当前实例将替换为另一个指定的字符串。
你不需要正则表达式。
您可以使用String.IndexOf(string)
获取空白的第一个索引以及一点点Remove
和Insert
方法组合。
报告指定的第一个出现的从零开始的索引 在这个例子中的字符串
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,
\S
匹配非空白字符。 \S*
匹配零个或多个非空白字符。 ^
声称我们刚开始。
<强>代码:强>
string sku= "plmca60 5";
string result = Regex.Replace(sku, @"^(\S*) ", "$1,");
Console.WriteLine(result);
Console.ReadLine();
答案 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(" "));