加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C#,正则表达式:如何解析逗号分隔的值,其中一些值可能引用字符串

发布时间:2020-12-15 06:55:08 所属栏目:百科 来源:网络整理
导读:在C#中,使用正则表达式类,如何解析逗号分隔的值,其中一些值可能引用字符串本身包含逗号? using System ;using System.Text.RegularExpressions ;class Example { public static void Main ( ) { string myString = "cat,dog,"0 = OFF,1 = ON",lion,tiger,
在C#中,使用正则表达式类,如何解析逗号分隔的值,其中一些值可能引用字符串本身包含逗号?
using System ;
using System.Text.RegularExpressions ;

class  Example
    {
    public static void Main ( )
        {
        string  myString  =  "cat,dog,"0 = OFF,1 = ON",lion,tiger,'R = red,G = green,B = blue',bear" ;
        Console.WriteLine ( "nmyString is ...nt" + myString + "n" ) ;
        Regex   regex  =  new Regex  (  "(?<=,("|')).*?(?=("|'),)|(^.*?(?=,))|((?<=,).*?(?=,).*?$)"  )  ;
        Match   match  =  regex.Match ( myString ) ;
        int j = 0 ;
        while ( match.Success )
            {
            Console.WriteLine ( j++ + " t" + match ) ;
            match  =  match.NextMatch() ;
            }
        }
    }

输出(部分)显示如下:

0       cat
1       dog
2       "0 = OFF
3        1 = ON"
4       lion
5       tiger
6       'R = red
7        G = green
8        B = blue'
9       bear

但是,期望的输出是:

0       cat
1       dog
2       0 = OFF,1 = ON
3       lion
4       tiger
5       R = red,B = blue
6       bear

解决方法

尝试使用这个正则表达式:
"[^"rn]*"|'[^'rn]*'|[^,rn]*
Regex regexObj = new Regex(@"""[^""rn]*""|'[^'rn]*'|[^,rn]*");
    Match matchResults = regexObj.Match(input);
    while (matchResults.Success) 
    {
        Console.WriteLine(matchResults.Value);
        matchResults = matchResults.NextMatch();
    }

.OUPUTS:

>猫
>狗
>“0 = OFF,1 = ON”
>狮子
老虎
>’R =红色,G =绿色,B =蓝色’
>熊

注意:这个正则表达式解决方案将适用于您的案例,但我建议您使用专门的库,如FileHelpers.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读