我有很長的字符串,它們是IMAP請求的響應,我想從中提取一些值。它通常被格式化爲「x someword」或「someword x」 - 如何讓某個詞(已知)得到x(可以是多個數字)?響應的每個「行」看起來像:從C#中的某個單詞之前/之後的字符串中過濾值#
* x someword \r\n
和我的字符串包含這幾行。提取期望值的最簡單方法是什麼?
示例: 爲 「* X WORD1 \ r \ n * Y WORD2 \ r \ n」 個,與WORD2作爲參數我想得Y
所有響應例如:
* FLAGS (\\Answered \\Flagged \\Draft \\Deleted \\Seen)\r\n* OK [PERMANENTFLAGS()] Flags permitted.\r\n* OK [UIDVALIDITY xxx] UIDs valid.\r\n* 3 EXISTS\r\n* 0 RECENT\r\n* OK [UIDNEXT x] Predicted next UID.\r\n. OK [READ-ONLY] INBOX selected. (Success)\r\n
對於 「是否存在」 我想3
我自己做過這件事:recentfilter = @「\ d {1,} EXISTS」; mc = Regex.Matches(response,recentfilter); recent = Int32.Parse(mc [0] .Value.Replace(「EXISTS」,String.Empty));你能告訴我是否有任何大的差異或一些潛在的問題嗎? – deha
'\ d {1,}'與'\ d +'相同,'\ d +'語法更通用,因爲它的更短。你的代碼會有類似的效果,但是你多次解析你的輸入字符串,你最好使用命名捕獲來實現性能。 –
感謝您的回答。其他人也很棒 – deha