- 締切済み
ComboBoxの項目からある部分の数字だけを抽出したい。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- NoMusicNoLife49
- ベストアンサー率63% (14/22)
こんにちは。 正規表現を用いれば、実現可能です。 以下ソース↓ '変数宣言 Dim 正規表現文字列1 As String = "@.+@" Dim 正規表現文字列2 As String = "\d+" Dim コンボボックス表示文字列 As String = "カツ丼 @500円@" Dim 抽出文字列 As String = String.Empty Dim 数値 As String = String.Empty '@~@間の全文字列取得 抽出文字列 = System.Text.RegularExpressions.Regex.Match(コンボボックス表示文字列, 正規表現文字列1).Value '@~@間の全文字列の中から数値のみを取得 数値 = System.Text.RegularExpressions.Regex.Match(抽出文字列, 正規表現文字列2).Value '確認 MsgBox(数値)
- n-jun
- ベストアンサー率33% (959/2873)
2008ですが。 Dim st As String = "カツ丼 @500円@" 'ここはコンボボックスの値取得と同じ If System.Text.RegularExpressions.Regex.IsMatch(st, "\d+円") Then Dim r As New System.Text.RegularExpressions.Regex("(?<tanka>\d+)円") TextBox1.Text = r.Match(st).Result("${tanka}") End If は如何でしょう。
- chibita_papa
- ベストアンサー率60% (127/209)
こんな感じでどうでしょう Private Sub test Dim s As String = "カツ丼 500円" Console.WriteLine(tanka(s)) End Sub Function tanka(ByVal vstr As String) As Integer '全角スペースを半角スペースに Dim arr As String() = StrConv(vstr, VbStrConv.Narrow).Split(Space(1)) '配列の一番最後 Dim s As String = arr(arr.Length - 1) If Strings.Right(s, 1) = "円" Then '円が含まれていればOK Return Val(s) Else '取得できなかった Return 0 End If End Function 品名と値段の間にはスペースが有る事 最後が○○円で終わっている事 が条件です。