gpt4 book ai didi

c# - 字符串函数 - 如果一个字符位于两个其他字符之间,则替换该字符的实例

转载 作者:行者123 更新时间:2023-11-30 20:44:06 24 4
gpt4 key购买 nike

我运行了一个我不想再次运行的大量 SQL 查询并将结果保存为 csv。我正在 C# 控制台应用程序中进行一些处理,将每条记录添加到存储表中。不幸的是,我搞砸了,没有从结果中删除“,”,并且在这个包含“,”的数据中有一些在 JSON 中序列化的对象。

我已经循环遍历所有这些数据,以便我的列正确排列我只想暂时将“,”转换为“;”,但前提是它位于字符串中的大括号之间。例如:

ID,InputModel,Type
1,{"address":"11th street"},true
2,{"address":"11th street, new york"},true

我的代码如下:

for (int j = 0; j < allLines.Length; j++)
{
string line = allLines[j];
// would like to replace ',' with ';' if between curly braces
string[] data = line.Split(',');
myInsertMethod(data);
}

期望的结果:

ID,InputModel,Type
1,{"address":"11th street"},true
2,{"address":"11th street; new york"},true

最佳答案

您可以使用以下正则表达式匹配花括号内的逗号:

(?<=\{[^}]*),(?=[^}]*\})

可以用分号代替:

var rgx = new Regex(@"(?<=\{[^}]*),(?=[^}]*\})");
var result = rgx.Replace("{word, word}, {word, word}", ";");

结果:{word;词},{词;单词

您的代码:

private static readonly Regex rgx = new Regex(@"(?<=\{[^}]*),(?=[^}]*\})", RegexOptions.Compiled);
...
for (int j = 0; j < allLines.Length; j++)
{
var line = allLines[j];
var data = rgx.Replace(line, ";").Split(',');
myInsertMethod(data);
}

在 Expresso 中测试:

enter image description here

关于c# - 字符串函数 - 如果一个字符位于两个其他字符之间,则替换该字符的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29799644/

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