1
我有一個文本字符串中花括號是這樣的:獲取符號數組
{field1}-{field}+{field3}Anthing{field4}
從中我需要得到一個這樣的數組:
['field1', 'field2', 'field3', 'field4']
是否有一個在c#中使用正則表達式的方法嗎?
我有一個文本字符串中花括號是這樣的:獲取符號數組
{field1}-{field}+{field3}Anthing{field4}
從中我需要得到一個這樣的數組:
['field1', 'field2', 'field3', 'field4']
是否有一個在c#中使用正則表達式的方法嗎?
您可以使用分割和LINQ:
MatchCollection matches = Regex.Matches(s, @"\{(\w*)\}");
string[] words = matches.Cast<Match>()
.Select(m => m.Groups[1].Value)
.ToArray();
\w*
將只匹配字母數字字符,你可能想:
string[] words = s.Split('+')
.Select(word => word.Substring(1, word.Length - 2))
.ToArray();
或者,您可以使用一個簡單的正則表達式匹配{...}
令牌將其替換爲[^}]*
或.*?
。
是這樣的? ↓
static void Main(string[] args)
{
string from = "{field1}+{field2}+{field3}";
string[] to = from.Split("{}+".ToCharArray() , StringSplitOptions.RemoveEmptyEntries).ToArray();
foreach (var x in to)
Console.WriteLine(x);
Console.ReadKey();
}
編輯
爲了解決這一問題 「{FIELD1} - {字段} + {字段3}參選{field4中}」
static void Main(string[] args)
{
string f = "{field1}-{field}+{field3}Anthing{field4} ";
List<string> lstPattern = new List<string>();
foreach (Match m in Regex.Matches(f, "{.*?}"))
{
lstPattern.Add(m.Value.Replace("{","").Replace("}",""));
}
foreach (var p in lstPattern)
Console.WriteLine(p);
}
將「+」分開並修剪每個項目的前導和尾隨支撐是否可以接受? –
你是否也想'feild2'拼錯了?如果是這樣,那麼這可能是非常困難的; P – leppie
@老人 - 你寫了一個評論刪除的答案:「分隔符可以是任何東西」。您應該編輯該問題以澄清該問題,並添加更好的示例。 – Kobi