2014-03-29 2 views
1

저는 교과서에서 작업하면서 .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

디버깅을하셨습니까? – OneFineDay

+0

무한 루프 ?? – OneFineDay

+0

thats 내 생각은, 그냥 디버깅을 시도 여전히 포장 마차 – 0000

답변

1

:

While Not {"A","E","I","O","U","Y"}.Contains(strWord.ToUpper.Substring(0, 1)) 

은 간단한 경우에 정규식을 사용할 필요가 없습니다 :

While strWord.ToUpper.Substring(0, 1) IsNot "[A,E,I,O,U,Y]" 

당신은 아마이 원했다.

+0

와우 멋진 답변은 완벽하게 작동합니다! – 0000

2

잠시 동안의 상태는 항상 맞습니다.

여기 IsNot 연산자의 세부 사항을 참조하십시오 http://msdn.microsoft.com/en-us/library/t3bat82c.aspx

두 개의 객체 참조가 다른 개체를 참조하면 IsNot 연산자를 결정합니다. 그러나 값 비교는 수행하지 않습니다. object1과 object2가 모두 동일한 객체 인스턴스를 참조하는 경우 결과는 False입니다. 그렇지 않은 경우 결과는 참입니다.

+0

은 내가 사용할 수있는 반대의 패턴 일치하는 무엇입니까? 나는 그들이 정말로 달랐다는 것을 깨달았다. – 0000

+0

정규식을 패턴 매칭에 사용하는 것이 좋습니다 –

+0

코드에서 어떻게 작동하는지 예를 들려 줄 수 있습니까? – 0000

1

당신은 StringComparison.OrdinalIgnoreCase는 대소 insenstive하게

While "AEIOUY".IndexOf(strWord.Substring(0, 1), StringComparison.OrdinalIgnoreCase) >= 0 

사용할 수 있습니다. .ToUpper을 사용하면 대/소문자를 구분하지 않는 비교를 시도하는 분명한 방법이지만 다른 문화권에서 문자열 비교를해야하는 경우 문제가 발생할 수 있습니다. 다른 StringComparison 옵션이 더 적합 할 수 있습니다. 대신이의

관련 문제