나는 단어를 찾고 정규식을 사용하여 바꾸려고합니다. 스택 오버 플로우 예외가 계속 발생하고, 재귀 루프로 인해 geussing이 발생했습니다. 그래서 첫 번째 코드 블록에서 for 루프를 제거하고 두 번째 코드 블록을 작성했지만 여전히 동일한 문제가 발생했습니다.누구나이 스택 오버플로의 원인을 알려 줄 수 있습니까?
대소 문자를 무시하면서 특정 문자열을 찾아서 동일한 문자열의 대소 문자로 자동 바꾸려고합니다. 예를 들어 누군가가 "vB"를 입력하면 자동으로 "vb"로 바뀝니다. 내 문제는 textchanged 이벤트에 빠져야 만한다는 것을 알기 때문에 누군가가 나를 올바른 방향으로 인도 할 수 있다면 매우 감사 할 것입니다.
Private Sub tb_textchanged(ByVal sender As System.Object, ByVal e As TextChangedEventArgs)
Dim pattern As String = "\<vb\>"
Dim input As String = txt.Text
For Each m As Match In Regex.Matches(input, pattern, RegexOptions.IgnoreCase)
Dim caretpos As FastColoredTextBoxNS.Place = New Place(txt.Selection.Start.iChar, txt.Selection.Start.iLine)
Dim replacement As String = "<vb>"
Dim rgx As New Regex(pattern)
Dim result As String = rgx.Replace(input, replacement, RegexOptions.IgnoreCase)
txt.Text = result
txt.Selection.Start = New Place(caretpos.iChar, caretpos.iLine)
Next
End Sub
For 루프를 교체 한 후.
Private Sub tb_textchanged(ByVal sender As System.Object, ByVal e As TextChangedEventArgs)
Dim pattern As String = "\<vb\>"
Dim input As String = txt.Text
Dim matches As MatchCollection = Regex.Matches(input, pattern, RegexOptions.IgnoreCase)
If matches.Count > 0 Then
Dim caretpos As FastColoredTextBoxNS.Place = New Place(txt.Selection.Start.iChar, txt.Selection.Start.iLine)
Dim replacement As String = "<vb>"
Dim rgx As New Regex(pattern)
Dim result As String = rgx.Replace(input, replacement, RegexOptions.IgnoreCase)
txt.Text = result
txt.Selection.Start = New Place(caretpos.iChar, caretpos.iLine)
End If
End Sub
안녕하세요, Jeremy, 저에게 감사드립니다. if 문을 변경하고 return에서 줄 바꿈을 제거하고이를 반영하도록 게시물을 편집해야했습니다. 나는 당신이 C# 프로그래머입니다 geussing 오전. 어쨌든 덕분에, 그것은 잘 작동합니다. :) – user1632018