我有一個簡單的算術表達式,其中包含整數,括號和+ - */。就像這樣:c#將算術表達式拆分爲字符串[]
((1+33)()(4+(3-5)))
我需要做的就是這個表達式拆分到string[]
這樣的:
{(, (, 1, +, 33,), (,), (, 4, +, (, 3, -, 5,),),)}
我試圖用Regex
類做
public string[] SplitString(string str)
{
return Regex.Split(str, "(?<=[()-+*/])|(?=[()-+*/])");
}
但是輸出數據不太正確:
{(, (, 1, +, 33,), (,), (, 4, +, (, **3-5**,),),)}
您可以計算結果而不拆分它。這是你在追求什麼? – user3185569
請注意'' - +'在你的char類中創建了一個比你期望的更多的範圍。將連字符放在字符類的末尾。 –
除了那個非轉義的破折號,我建議考慮做另一種方式:匹配所需的標記並返回一個所有匹配的列表 - 你將得到一個更簡單的正則表達式:'return Regex.Matches(str,@「([ ()+ */- ] | \ d +)「)。Cast().Select(m => m.Value).ToArray();' –