式で使用する文字列の演算子を解析する方法はありますか?
例: 「5 + 4」
この場合、5 と 4 は文字列ですが、for ループを使用して整数に解析できますよね? しかし、+ 演算子はどうでしょうか?
さて、ChrisFのソリューションを使用しました
式で使用する文字列の演算子を解析する方法はありますか?
例: 「5 + 4」
この場合、5 と 4 は文字列ですが、for ループを使用して整数に解析できますよね? しかし、+ 演算子はどうでしょうか?
さて、ChrisFのソリューションを使用しました
ポスターは彼の問題を解決したようですが、誰かがこの投稿を見つけて答えを探している場合に備えて、私は非常に簡単な解決策を作成しました.
Dim s As String = "5 * 4" 'our equation
s = s.Replace(" ", "") 'remove spaces
Dim iTemp As Double = 0 'double (in case decimal) for our calculations
For i As Integer = 0 To s.Length - 1 'standard loop
If IsNumeric(s(i)) Then
iTemp = Convert.ToInt32(s(i)) - 48 'offset by 48 since it gets ascii value when converted
Else
Select Case s(i)
Case "+"
'note s(i+1) looks 1 index ahead
iTemp = iTemp + (Convert.ToInt32(s(i + 1)) - 48)'solution
Case "-"
iTemp = iTemp - (Convert.ToInt32(s(i + 1)) - 48)'solution
Case "*"
iTemp = iTemp * (Convert.ToInt32(s(i + 1)) - 48)'solution
Case "/"
'you should check for zero since x/0 = undefined
iTemp = iTemp / (Convert.ToInt32(s(i + 1)) - 48)'solution
End Select
Exit For 'exit since we are done
End If
Next
MsgBox(iTemp.ToString)
これは、単純で迅速で汚れたソリューションです。私が学校で (何ヶ月も前に) 学んだ方法は、スタックを使ってこの種の問題を解決することでした。複雑な数学的文字列は、スタックを使用して解析できます。