用户输入字母然后按钮使用 VB 从字符串计算位置
User enters letter then button computes position from a string using VB
我正在使用 indexOf
但我无法弄清楚我在哪里犯了错误,因为输出给出了 -1
.
我意识到我可以将整个语句段落复制到输出的最后一行,但我希望它可以直接从标签中提取出来。
Public Class Form1
Private Sub btnCompute_Click(sender As Object, e As EventArgs) Handles btnCompute.Click
Dim statement As String
Dim letter As String
statement = CStr(lblStatement.Text)
letter = CStr(txtLetter.Text)
txtOutput.Text = CStr(lblStatement.Text).IndexOf("letter")
'txtOutput.Text = letter.ToUpper & " first occurs in position " & statement.IndexOf(statement) & "."
End Sub
End Class
这是表格的图片:
更新:感谢@ADyson 和@Slugsie 花时间回复我的求助电话。正如@Slugsie 指出的那样,在我的屏幕截图中确实是小写字母。我现在正在研究如何让它在不区分大小写的情况下工作。
最终代码
Public Class Form1
Private Sub btnCompute_Click(sender As Object, e As EventArgs) Handles btnCompute.Click
txtOutput.Text = lblStatement.Text.IndexOf((txtLetter.Text).ToUpper)
End Sub
End Class
.IndexOf("letter")
正在查找用户在文本中输入的数据中的文字 letter
。在 VB.NET(和大多数其他编程语言)中,引号内的任何内容都被视为固定的文本字符串,按原样解释,而不是作为程序代码处理或处理。
要让它查找 letter
变量的内容(看起来像您想要的),只需删除引号:
.IndexOf(letter)
顺便说一句,您的整个代码可以大大减少 - 主要是 CStr
的使用是不必要的,因为文本框和标签的 Text
属性已经 return 一个字符串- 这意味着你不需要使用 CStr
转换它 - 而且因为你没有使用你声明的所有变量。
您可以更简洁地重写整个示例:
Public Class Form1
Private Sub btnCompute_Click(sender As Object, e As EventArgs) Handles btnCompute.Click
txtOutput.Text = lblStatement.Text.IndexOf(txtLetter.Text)
End Sub
End Class
我正在使用 indexOf
但我无法弄清楚我在哪里犯了错误,因为输出给出了 -1
.
我意识到我可以将整个语句段落复制到输出的最后一行,但我希望它可以直接从标签中提取出来。
Public Class Form1
Private Sub btnCompute_Click(sender As Object, e As EventArgs) Handles btnCompute.Click
Dim statement As String
Dim letter As String
statement = CStr(lblStatement.Text)
letter = CStr(txtLetter.Text)
txtOutput.Text = CStr(lblStatement.Text).IndexOf("letter")
'txtOutput.Text = letter.ToUpper & " first occurs in position " & statement.IndexOf(statement) & "."
End Sub
End Class
这是表格的图片:
更新:感谢@ADyson 和@Slugsie 花时间回复我的求助电话。正如@Slugsie 指出的那样,在我的屏幕截图中确实是小写字母。我现在正在研究如何让它在不区分大小写的情况下工作。
最终代码
Public Class Form1
Private Sub btnCompute_Click(sender As Object, e As EventArgs) Handles btnCompute.Click
txtOutput.Text = lblStatement.Text.IndexOf((txtLetter.Text).ToUpper)
End Sub
End Class
.IndexOf("letter")
正在查找用户在文本中输入的数据中的文字 letter
。在 VB.NET(和大多数其他编程语言)中,引号内的任何内容都被视为固定的文本字符串,按原样解释,而不是作为程序代码处理或处理。
要让它查找 letter
变量的内容(看起来像您想要的),只需删除引号:
.IndexOf(letter)
顺便说一句,您的整个代码可以大大减少 - 主要是 CStr
的使用是不必要的,因为文本框和标签的 Text
属性已经 return 一个字符串- 这意味着你不需要使用 CStr
转换它 - 而且因为你没有使用你声明的所有变量。
您可以更简洁地重写整个示例:
Public Class Form1
Private Sub btnCompute_Click(sender As Object, e As EventArgs) Handles btnCompute.Click
txtOutput.Text = lblStatement.Text.IndexOf(txtLetter.Text)
End Sub
End Class