第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

C#,正則表達(dá)式:如何解析逗號(hào)分隔的值,其中某些值可能用引號(hào)引起來,字符串本身包含逗號(hào)

C#,正則表達(dá)式:如何解析逗號(hào)分隔的值,其中某些值可能用引號(hào)引起來,字符串本身包含逗號(hào)

在C#中,使用Regex該類,如何解析逗號(hào)分隔的值,其中某些值可能被引號(hào)括起來的包含逗號(hào)的字符串本身?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 ...\n\t" + 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       cat1       dog2       "0 = OFF3        1 = ON"4       lion5       tiger6       'R = red7        G = green8        B = blue'9       bear但是,所需的輸出是:0       cat1       dog2       0 = OFF, 1 = ON3       lion4       tiger5       R = red, G = green, B = blue6       bear
查看完整描述

3 回答

?
千巷貓影

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超7個(gè)贊

嘗試使用此正則表達(dá)式:


"[^"\r\n]*"|'[^'\r\n]*'|[^,\r\n]*

    Regex regexObj = new Regex(@"""[^""\r\n]*""|'[^'\r\n]*'|[^,\r\n]*");

    Match matchResults = regexObj.Match(input);

    while (matchResults.Success) 

    {

        Console.WriteLine(matchResults.Value);

        matchResults = matchResults.NextMatch();

    }


“ 0 = OFF,1 = ON”

獅子

'R =紅色,G =綠色,B =藍(lán)色'

注意:此正則表達(dá)式解決方案適用于您的情況,但是我建議您使用專用的庫,例如FileHelpers。


查看完整回答
反對(duì) 回復(fù) 2019-12-03
?
慕標(biāo)琳琳

TA貢獻(xiàn)1830條經(jīng)驗(yàn) 獲得超9個(gè)贊

為什么不聽從專家的建議,不要滾動(dòng)自己的CSV解析器。


您的第一個(gè)想法是,“我需要在引號(hào)內(nèi)處理逗號(hào)”。


您的下一個(gè)想法是,“哦,糟糕,我需要處理引號(hào)內(nèi)的引號(hào)。轉(zhuǎn)義的引號(hào)。雙引號(hào)。單引號(hào)...”


這是通往瘋狂的道路。不要自己寫。查找具有廣泛的單元測試覆蓋面的庫,該庫涉及所有困難部分,并為您解決了所有困難。對(duì)于.NET,請使用免費(fèi)的開源FileHelpers庫。


查看完整回答
反對(duì) 回復(fù) 2019-12-03
?
慕森卡

TA貢獻(xiàn)1806條經(jīng)驗(yàn) 獲得超8個(gè)贊

只需添加我今天上午工作的解決方案。


var regex = new Regex("(?<=^|,)(\"(?:[^\"]|\"\")*\"|[^,]*)");


foreach (Match m in regex.Matches("<-- input line -->"))

{

    var s = m.Value; 

}

如您所見,您需要每行調(diào)用regex.Matches()。然后,它將返回MatchCollection,其中具有與列相同數(shù)量的項(xiàng)目。顯然,每個(gè)匹配項(xiàng)的Value屬性都是解析后的值。


這項(xiàng)工作仍在進(jìn)行中,但它很樂意解析CSV字符串,例如:


2,3.03,"Hello, my name is ""Joshua""",A,B,C,,,D


查看完整回答
反對(duì) 回復(fù) 2019-12-03
  • 3 回答
  • 0 關(guān)注
  • 1022 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)