• 締切済み

ComboBoxの項目からある部分の数字だけを抽出したい。

ComboBoxの項目からある部分の数字だけを抽出したい。 例えばComboBox内に「カツ丼 @500円@」という項目があったとします。 この項目内の@から@にある数字のみを抽出してTextBoxに表示したいのですがどうすればいいでしょうか。 お詳しい方、よければ教えてください。 よろしくお願いします。 開発環境はVisualStudio2010です。

みんなの回答

回答No.3

こんにちは。 正規表現を用いれば、実現可能です。 以下ソース↓ '変数宣言 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)
回答No.2

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 は如何でしょう。

回答No.1

こんな感じでどうでしょう 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 品名と値段の間にはスペースが有る事 最後が○○円で終わっている事 が条件です。

関連するQ&A