[英]Extracting from string
我有一個非常復雜的字符串需要提取。
字符串- !0A!0B!0C @0A@0B@0B
我想為每個人閱讀!
並將它們提取為3的集合,表示!0A
, !0B
, !0C
,然后我計划使用select case讀取它們,因為它們每個都代表某種含義(select case會好嗎?)
以及如何在3秒內提取它們
我會使用正則表達式。 例如這樣:
Dim str As String = "!0A!0B!0C"
Dim ptr As String = "[!][A-Z0-9]{2}"
Dim matches As MatchCollection = Regex.Matches(str, ptr)
For Each m In matches
Console.WriteLine(m.ToString())
Next
抱歉,該示例在VB中,但您從中得到了靈感。
這種方法應該可以解決問題。 發送您的字符串,結果列表將會出來:
public List<string> StringParser( string s ){
var list = new List<string>();
for( int i = 0; i < s.Length; i++ ){
if( s[i] == '!' ){
list.Add(s.Substring(i,3));
i+= 2;
}
}
return list;
}
請注意,如果字符串包含!,這將失敗。 后面至少沒有其他兩個字符,因此您可能應該在實際運行substring命令之前進行測試以驗證這一點。
如果必須在代碼中的許多地方執行此操作,則可以創建一個奇特的擴展方法:
static class StringExtensions {
public static IEnumerable<String> SplitInParts(this String s, Int32 partLength) {
if (s == null)
throw new ArgumentNullException("s");
if (partLength <= 0)
throw new ArgumentException("Part length has to be positive.", "partLength");
for (var i = 0; i < s.Length; i += partLength)
yield return s.Substring(i, Math.Min(partLength, s.Length - i));
}
}
然后可以像這樣使用它:
var parts = "!0A!0B!0C @0A@0B@0B".SplitInParts(3);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.