我正在使用他们希望我使用的教科书.length,.trim,.remove,.insert,.indexof,.substring,like,is not,以及其他一些。我有这个程序直到while循环,它冻结了。 是否有另一个运营商查看将适用于我想要做的模式(或者是否有一种方法可以使用并使其工作)?如果是这样,我该如何使用它?
Private Sub btnConvert_Click(sender As Object, e As EventArgs) Handles btnConvert.Click
Dim strWord As String
strWord = txtBefore.Text
If strWord.ToUpper.Substring(0, 1) Like "[A,E,I,O,U]" Then
strWord = strWord.Insert(strWord.Length, "-way")
ElseIf strWord.ToUpper.Contains("A") Or
strWord.ToUpper.Contains("E") Or
strWord.ToUpper.Contains("I") Or
strWord.ToUpper.Contains("O") Or
strWord.ToUpper.Contains("U") Then
strWord = strWord.Insert(strWord.Length, "-")
'works up until the while loop
'program freezes no error
While strWord.ToUpper.Substring(0, 1) IsNot "[A,E,I,O,U,Y]"
Dim strTemp As String
strTemp = strWord.Substring(0, 1)
strWord = strWord.Remove(0, 1)
strWord = strWord.Insert(strWord.Length, strTemp)
End While
strWord = strWord.Insert(strWord.Length, "ay")
End If
'txtAfter.Text = strWord
End Sub
答案 0 :(得分:2)
你的状况永远是真实的。
在此处查看IsNot运算符的详细信息: http://msdn.microsoft.com/en-us/library/t3bat82c.aspx
IsNot运算符确定两个对象引用是否引用不同的对象。但是,它不执行值比较。如果object1和object2都引用完全相同的对象实例,则结果为False;如果他们不这样做,结果是真的。
答案 1 :(得分:1)
您可以使用
While "AEIOUY".IndexOf(strWord.Substring(0, 1), StringComparison.OrdinalIgnoreCase) >= 0
StringComparison.OrdinalIgnoreCase
使其不区分大小写。使用.ToUpper
是尝试进行不区分大小写的比较的明显方法,但如果您不得不在其他文化中进行字符串比较,则会导致问题。另一个StringComparison选项可能更合适。
答案 2 :(得分:1)
而不是:
While strWord.ToUpper.Substring(0, 1) IsNot "[A,E,I,O,U,Y]"
你可能想要这个:
While Not {"A","E","I","O","U","Y"}.Contains(strWord.ToUpper.Substring(0, 1))
没有理由将Regex用于这么简单的案例。