我正在尝试创建一个方法,用于分析一段文本,看它是否包含数值。例如,给定以下字符串:
2乘2等于多少?
我需要确定以下信息:
- 字符串包含数值:
True
- 它包含的数值是什么:
2
(任何一个数值都应该使函数返回true,并且我应该将每个2在字符串中的位置存储在一个变量中,例如第一个2的位置为0)
这是我目前的代码:
Public Function InQuestion(question As String) As Boolean ' 使用字符串中数字的位置进行可能的子字符串操作?End Function
回答:
这是一个示例控制台应用程序:
Module Module1 Sub Main() Dim results As List(Of NumericValue) = GetNumericValues("2乘2等于多少?") For Each i As NumericValue In results Console.WriteLine("{0}: {1}", i.Position, i.Value) Next Console.ReadKey() End Sub Public Class NumericValue Public Sub New(value As Decimal, position As Integer) Me.Value = value Me.Position = position End Sub Public Property Value As Decimal Public Property Position As Integer End Class Public Function GetNumericValues(data As String) As List(Of NumericValue) Dim values As New List(Of NumericValue)() Dim wordDelimiters() As Char = New Char() {" "c, "*"c, "?"c} Dim position As Integer = 0 For Each word As String In data.Split(wordDelimiters, StringSplitOptions.None) Dim value As Decimal If Decimal.TryParse(word, value) Then values.Add(New NumericValue(value, position)) End If position += word.Length + 1 Next Return values End FunctionEnd Module
如您所见,它传递了字符串“2乘2等于多少?”并输出每个数值的位置和值:
8: 2
12: 2