2014-02-18 122 views
0

當檢索從Gmail標籤AA名單分裂,他們回來作爲一個字符串,例如:在一個字符串解析項目由多個分隔符

\Inbox \Sent Important "Muy Importante" foo 

如果有一個內置的.NET功能我想知道將其分爲「真」格式 - 即

["\Inbox", "\Sent Important", "Muy Importante", "foo" ] 

或者這是一個正則表達式嗎?

回答

2

如果模式是有規律的話,我會通過簡單的字符,直到迭代預期的分隔符被找到。

1.循環字符直到第二個「\」字符。

在這一點上,你知道你的第一個字是由什麼組成。將其存儲在一個變量中。

2.從前面的位置再次循環,直到遇到空格字符。

你現在知道第二部分是什麼。存儲在一個變量中。

3.從以前的位置循環,直到遇到引號。

現在你知道第三部分是什麼了。再次,存儲在一個變量中。

4.從前面的位置循環,直到遇到第二個引號。

您現在有第四部分。第五個是剩下的。兩個都存儲在變量中。

當然,在每一步你都想做一些修整,但是這給了你主要的想法。您將可以使用細分變量來從中執行任何您想要的操作。正則表達式的效率會更高。

不要忘記:這是如果模式是規則的。

+0

是的,這是(不幸)正是我所做的。 – maxp

+0

然後你做了正確的恕我直言。我認爲在循環字符方面沒有任何問題,很多(高效的)解析器都是這樣做的。並非每一個編碼問題都可以通過單線解決。 :) – Crono

0

就個人而言,我會用正則表達式...

C#版本

System.Text.RegularExpressions.Regex.Split("\\Inbox \\Sent Important \"Muy Importante\" foo", " \"*") 

VB.Net版本

System.Text.RegularExpressions.Regex.Split("\Inbox \Sent Important ""Muy Importante"" foo", " ""*") 
+0

這不起作用 - 它把它分成6個項目 – maxp

+0

正確的想法,錯誤的正則表達式。 –