2015-09-03 124 views
-1

我用分号分隔字符串,其中包含每种类型的值。字符串和日期值用引号括起来。如何在字符串中替换引号中的符号

现在我有一个邪恶的字符串,其中一个内部字符串包含s分号,我需要删除(不需要替换)。

例如:

“值1”; 0; “值2”; 4711; “恶;值”; “2015年9月3日”

在C#:

string value = "\"Value1\";0;\"Value2\";4711;\"Evil; Value\";\"2015-09-03\"" 

那么如何替换引号中的所有分号呢?任何人都可以帮忙吗?

+0

嘿家伙,我不能在那里读到答案。请仔细阅读我的文章!我不!!有一个文件,我只是有一个字符串!那么告诉我如何用TextFieldParser做到这一点? – Dosihris

+0

那就是正确答案!再次打开此线程发布给任何其他人! StringBuilder builder = new StringBuilder(textBox1.Text); foreach(在Regex.Matches中匹配m(builder.ToString(),“\”。*?\“”)) if(m.Value.Contains(“;”))//如果它包含分号 { string temp = m.Value.Replace(“;”,“”); builder.Replace(m.Value,temp); } } var parts = builder.ToString()。Split(new char [] {';'}); – Dosihris

回答

-1

你应该试试这个即只匹配那些不被:前面分号:

(?<=[^"]); 

这里是demo

+0

分号前面加冒号的地方在哪里? –

+0

而且演示也不好用 –

+0

@ThomasWeller有什么问题,他想替换里面的''''' –

1

正则表达式是在处理分隔字符串可怕。它可以做到这一点,但它通常不像第一次出现那样好。这是几个原因之一。

相反,您应该使用专用的分隔字符串分析器。 .Net框架中至少有(三个)内置的。 TextFieldParser类型就是其中之一,它会正确处理。

+0

有趣。想知道我以前从未见过这门课。我想这是Microsoft.VisualBasic.dll的一部分。嗯...好奇。 – aquinas

+0

由于兼容性的原因,它是该名称空间的一部分,但它在C#中很有用。 –

+0

它只能处理文件,没有简单的字符串! – Dosihris

相关问题