Vb.net 如何在字符串中搜索整数

Vb.net 如何在字符串中搜索整数,vb.net,string,integer,Vb.net,String,Integer,我正在制作一个程序,当输入是非结构化的时,它会给你一个求和的结果。请参见以下内容: 输入: whats 20 + 26 输出: 46 我已经知道如何搜索字符串中的文本(如果text.IndexOf(“hello”)>=0,那么) 我不知道如何将这两个整数用于加法方程。将这两个整数解析为两个整数变量-我们将它们称为x和y。然后添加他们的结果 Dim x as Integer Dim y as Integer Dim result as Integer 'parse your integers

我正在制作一个程序,当输入是非结构化的时,它会给你一个求和的结果。请参见以下内容:

输入:

whats 20 + 26
输出:

46
我已经知道如何搜索字符串中的文本(
如果text.IndexOf(“hello”)>=0,那么


我不知道如何将这两个整数用于加法方程。

将这两个整数解析为两个整数变量-我们将它们称为
x
y
。然后添加他们的结果

Dim x as Integer
Dim y as Integer
Dim result as Integer

'parse your integers- you indicate you already know how to do this

'add the results
result = x + y

'now print out the result

将两个整数解析为两个整数变量-我们将它们称为
x
y
。然后添加他们的结果

Dim x as Integer
Dim y as Integer
Dim result as Integer

'parse your integers- you indicate you already know how to do this

'add the results
result = x + y

'now print out the result

下面是一个如何开始使用正则表达式执行此操作的快速示例。这不会是防弹的任何你扔它,但它应该有一个良好的开端

确保将:
导入System.Text.RegularExpressions
添加到.vb文件中

    'This string is an example input.  It demonstrates that the method below 
    'will find the sum "2345+ 3256236" but will skip over things like 
    '  if + .04g
    '  1.23 + 4
    ' etc...
    Dim input As String = _   
       "aoe%rdes 2345+ 3256236 if + .04g  rcfo 8 3 . 1.23 + 4 the#r whuts"

    Dim pattern As String = "\s\d+\s*\+\s*\d+(?=\s|$)"
    For Each _match As Match In Regex.Matches(input, pattern)
        Dim a = _match.Value.Split("+"c)  'Match extracts "2345+ 3256325"
        Dim x As Integer                
        Dim y As Integer
        If Integer.TryParse(a(0), x) AndAlso Integer.TryParse(a(1), y) Then
            Console.WriteLine("Found the Sum : " & x & " + " & y)
            Console.WriteLine("Sum is : " & x + y)
        Else
            Console.WriteLine("Match failed to parse")
        End If
    Next
正则表达式可以分解为

\s        '(definitely) one whitespace
\d+       'followed by any number of integer digits
\s*       'followed by (possibly) a whitespace
\+        'followed by (definitely) a "+"
\s*       'followed by (possibly) a whitespace
\d+       'followed by any number of integer digits
(?=\s|$)  'followed by (definitely) either a whitespace or EOL
请在此处阅读更多信息:


下面是一个如何开始使用正则表达式执行此操作的快速示例。这不会是防弹的任何你扔它,但它应该有一个良好的开端

确保将:
导入System.Text.RegularExpressions
添加到.vb文件中

    'This string is an example input.  It demonstrates that the method below 
    'will find the sum "2345+ 3256236" but will skip over things like 
    '  if + .04g
    '  1.23 + 4
    ' etc...
    Dim input As String = _   
       "aoe%rdes 2345+ 3256236 if + .04g  rcfo 8 3 . 1.23 + 4 the#r whuts"

    Dim pattern As String = "\s\d+\s*\+\s*\d+(?=\s|$)"
    For Each _match As Match In Regex.Matches(input, pattern)
        Dim a = _match.Value.Split("+"c)  'Match extracts "2345+ 3256325"
        Dim x As Integer                
        Dim y As Integer
        If Integer.TryParse(a(0), x) AndAlso Integer.TryParse(a(1), y) Then
            Console.WriteLine("Found the Sum : " & x & " + " & y)
            Console.WriteLine("Sum is : " & x + y)
        Else
            Console.WriteLine("Match failed to parse")
        End If
    Next
正则表达式可以分解为

\s        '(definitely) one whitespace
\d+       'followed by any number of integer digits
\s*       'followed by (possibly) a whitespace
\+        'followed by (definitely) a "+"
\s*       'followed by (possibly) a whitespace
\d+       'followed by any number of integer digits
(?=\s|$)  'followed by (definitely) either a whitespace or EOL
请在此处阅读更多信息:



使用非结构化数据输入流程的目的是什么?例如:为什么需要通过输入而不是请求的值1、值2、值n进行解析会增加复杂性?这实际上是一个相当困难的问题。这不是一个具体的编程问题,而是一个广泛的编程问题。要解决这个问题,您需要应用一组非常广泛的编程工具,特别是如果您对输入字符串的格式没有限制的话。很明显,您甚至还没有考虑到将这些问题组合在一起所需的所有子问题。如果用户键入<代码>什么是20 + 26 或<代码>我有20个苹果和26个手指<代码> >或代码>不管你做什么,不要告诉我20 + 26 的总和,或者<代码>什么是26.9 + 7的东西%133T K0DRZ可以D0?< /代码>总之,考虑你所问的复杂性,并试图把问题分解成更简单的子集。目前,这个问题是问如何编写自然语言解析器——这不是一个简单的问题。如果你只是在学习如何编程,我建议你先从基础开始。你可能想开始研究正则表达式——像这样的问题可能会有帮助:请注意,正则表达式只会为这个问题提供有限的特定类型的解决方案,但这至少是一个开始。只需在
文本框中添加限制,就像不允许使用字母表一样。这将简化你的作业:)此外,什么样的人会键入“what's 20+20”而不是“20+20”
单击按钮
使用非结构化数据输入过程的目的是什么?例如:为什么需要通过输入而不是请求的值1、值2、值n进行解析会增加复杂性?这实际上是一个相当困难的问题。这不是一个具体的编程问题,而是一个广泛的编程问题。要解决这个问题,您需要应用一组非常广泛的编程工具,特别是如果您对输入字符串的格式没有限制的话。很明显,您甚至还没有考虑到将这些问题组合在一起所需的所有子问题。如果用户键入<代码>什么是20 + 26 或<代码>我有20个苹果和26个手指<代码> >或代码>不管你做什么,不要告诉我20 + 26 的总和,或者<代码>什么是26.9 + 7的东西%133T K0DRZ可以D0?< /代码>总之,考虑你所问的复杂性,并试图把问题分解成更简单的子集。目前,这个问题是问如何编写自然语言解析器——这不是一个简单的问题。如果你只是在学习如何编程,我建议你先从基础开始。你可能想开始研究正则表达式——像这样的问题可能会有帮助:请注意,正则表达式只会为这个问题提供有限的特定类型的解决方案,但这至少是一个开始。只需在
文本框中添加限制,就像不允许使用字母表一样。这将简化你的家庭作业:)此外,什么样的人会键入“what's 20+20”而不是“20+20”
点击按钮
他没有说他已经知道如何解析整数-他说他知道如何找到特定的文本,而不是像任意大小的未指定整数这样的一般事物。@J。。。请注意,OP做了两个单独的陈述,表明他最有可能解析整数:1)“我已经知道如何搜索字符串中的文本”;和2)“我不知道如何使用加法方程的两个整数”。如果两个整数还没有被解析,他怎么会有两个“加法方程”的整数呢?我回答了他的问题:“我不知道如何使用加法方程的两个整数。”。你对我和Dan Verdolino的回答投了反对票,这是不符合要求的。我希望你有一个愉快的一天。阅读文章标题-它询问如何搜索字符串中的整数。语句“我知道如何搜索文本”并不意味着“我知道如何搜索整数”。英语显然不是OP的母语——最符合逻辑的语句2应该被理解为“我不知道如何使用字符串中的两个整数作为加法方程”。当然,OP在赋值和加法的语法上并没有被难倒。仔细想想,看看你提供了什么实际内容。谢谢你的回答,但我需要在文本框中找到2个整数。@J。。。我真的不知道OP的母语是什么。我只是想帮助她/他。你怎么能认为他对一件事了如指掌,而对另一件事却一无所知呢。也许是千里眼。正如其他人所说的那样,纳凯布