当前位置:编程学习 > C#/ASP.NET >>

分割字符串

现在有一个这样的字符串,如下:
"JRCDDS299","Win7",,,"TRDSDC_1.4.4 was installed Tue, 17 Sep 2013 13:59:14 +0300"

注意:"TRDSDC_1.4.4 was installed Tue, 17 Sep 2013 13:59:14 +0300"里有一个逗号。

我想在使用Split(',')的时候仅忽略双引号内的逗号。想请问大家怎么解决这个问题。如果是使用正则表达式,请给我个示例代码片段,谢谢了。 --------------------编程问答-------------------- 同学,直接用string.replace就可以了,把“,”替换成“” --------------------编程问答-------------------- 我目前用的是如下的方法,基本解决问题,如果有更好的方法,请告知我,谢谢大家。

string[] col = Regex.Split(line, ",(?=(?:(?:[^\"]*\"){2})*[^\"]*$)"); --------------------编程问答--------------------
引用 1 楼 a123465123465 的回复:
同学,直接用string.replace就可以了,把“,”替换成“”


我希望保持字符串内容不变。谢谢你的回答。 --------------------编程问答-------------------- 也可以自己写个方法,遍历字符串,以引号的奇偶性作为标记,用逗号来分隔。 --------------------编程问答-------------------- 用正则就是个好方法 --------------------编程问答--------------------
引用 2 楼 huangdancs 的回复:
我目前用的是如下的方法,基本解决问题,如果有更好的方法,请告知我,谢谢大家。

string[] col = Regex.Split(line, ",(?=(?:(?:[^\"]*\"){2})*[^\"]*$)");


目前没有币用正则更好的办法 --------------------编程问答-------------------- 你可以先把双引号replace成单引号,然后用这个:
string teststring = "123-456-'78-9'-10";
            Regex reg = new Regex(@"'[^']*'|[^-]+");
            MatchCollection mc = reg.Matches(teststring);
            foreach (Match m in mc)
            {
              Console.Write( m.Value + "\n");
            }
123
456
'78-9'
10
这个我试了是可以的,
最后你Split完成后,在不单引号replace成双引号就行了,
你可以试试,希望有用
--------------------编程问答--------------------
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,