gpt4 book ai didi

c# - 在双分号之间添加空格的更好方法

转载 作者:行者123 更新时间:2023-12-02 11:26:05 27 4
gpt4 key购买 nike

我的任务很简单:我在C#字符串中有一个CSV文件,用分号分隔。我需要为每个空单元格添加空格。 A;B;;;;C;应该变成A;B; ; ; ;C;。现在,我两次使用了replace方法:

csv = csv.Replace(";;", "; ;").Replace(";;", "; ;");

这是必要的,因为在第一遍中,它将替换;;的任何出现。之间有一个空格,但是没有回溯,因此将不会再次检查替换序列的第二个分号。因此,我最终会得到 A;B; ;; ;C;,这不是我想要的。

有没有更优雅,更清晰,更省时的方法来解决该任务?

最佳答案

您可以尝试将 Split 字符串插入各个部分,然后使用 Select (需要using System.Linq;)和 Join 条目将空条目替换为空格

var str = "A;B;;;;C";
var parts = str.Split(';').Select(p => string.IsNullOrEmpty(p) ? " " : p);

var result = string.Join(";", parts);

输出将是以下 A;B; ; ; ;C
与OP代码和 Regex解决方案相比的基准测试结果:

enter image description here

什么是清晰,更优雅的取决于您的决定。
引用的基准代码如下

[SimpleJob]
public class Benchmark
{
string input= "A;B;;;;C";

[Benchmark]
public string SplitJoinTest()
{
var parts = input.Split(';').Select(p => string.IsNullOrEmpty(p) ? " " : p);
return string.Join(";", parts);
}

[Benchmark]
public string DoubleReplaceTest()
{
return input.Replace(";;", "; ;").Replace(";;", "; ;");
}

[Benchmark]
public string RegexTest()
{
return Regex.Replace(input, ";(?=;)", "; ");
}
}

关于c# - 在双分号之间添加空格的更好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60184177/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com