如何创建C#Regex来拆分带有引号中某些单词的字符串?
我有一个字符串,格式如下:如何创建C#Regex来拆分带有引号中某些单词的字符串?,c#,regex,string,split,C#,Regex,String,Split,我有一个字符串,格式如下: "one,",2,3,"four " ","five" one, 2 3 four " five 我需要以下格式的输出: "one,",2,3,"four " ","five" one, 2 3 four " five 有人能帮我为上面的内容创建正则表达式吗 string newString = Regex.Replace(oldString, @'[^",]', ' '); 我希望正则表达式是好的,但我只是想让你看看这个想法 编辑: 您可以在没有正
"one,",2,3,"four " ","five"
one,
2
3
four "
five
我需要以下格式的输出:
"one,",2,3,"four " ","five"
one,
2
3
four "
five
有人能帮我为上面的内容创建正则表达式吗
string newString = Regex.Replace(oldString, @'[^",]', ' ');
我希望正则表达式是好的,但我只是想让你看看这个想法
编辑:
您可以在没有正则表达式的情况下执行此操作。我不清楚你想做什么。我已针对更新的问题调整了代码:
var text = "\"one\",2,3,\"four \"\",\"five\"";
var collection = text
.Split(',')
.Select(s =>
{
if (s.StartsWith("\"") && s.EndsWith("\""))
{
s = s.Substring(1, s.Length - 2);
}
return s;
})
.ToList();
foreach (var item in collection)
{
Console.WriteLine(item);
}
我为您添加了另一个示例,它使用CSV阅读器。我已经从NuGet安装了“CsvHelper”软件包:
const string text = "\"one,\",2,3,\"four \"\"\",\"five\"";
using (var textReader = new StringReader(text))
using (var reader = new CsvReader(textReader))
{
reader.Configuration.Delimiter = ',';
reader.Configuration.AllowComments = false;
reader.Configuration.HasHeaderRecord = false;
if (reader.Read())
{
foreach (var item in reader.CurrentRecord)
{
Console.WriteLine(item);
}
}
}
你为什么想要正则表达式?使用
String.Split
和Trim
实现这一点很简单。String有什么问题。替换(“\”,“”)和String.Split(“,”)?它看起来像CSV数据。您对此有何期望:“一,二?”",2,3? 你可能想看看CSV阅读器/解析器:+1,因为你的问题很好,这就是网站的目的。字符串中可能有一个。例如上面示例中的“一”。感谢您的更新,但第一种方法不适用于“一”的附加逗号(,),第二种方法不适用于“四”的附加引号。第二种方法使用CSV。来自维基百科:带有嵌入双引号字符的字段必须被引用,并且每个嵌入双引号字符必须由一对双引号字符表示。“。您可以在此处阅读有关CSV格式的更多信息:。我还为您更新了示例,以便您可以查看如何添加额外字符。”。