며칠 전 검색 텍스트 상자에서 일치하는 문자열에 대한 텍스트 파일을 검색하는 방법을 묻는 Stack Overflow에 대한 질문을 했습니다. 검색이 대소 문자를 구분한다는 사실을 제외하고는 지금까지 훌륭하게 작동했습니다. 나는 이것을 극복하는 방법을 생각했지만 필연적으로 원했던 방식으로 작동하지 않을 것입니다.
내 아이디어 / 솔루션 :
If ListBox.Items.Count = 0 Then
tbx_FindText.CharacterCasing = CharacterCasing.Upper
ElseIf ListBox.Items.Count = 0 Then
tbx_FindText.CharacterCasing = CharacterCasing.Lower
End If
이것은 본질적으로 대문자와 소문자를 모두 시도하지만 사용자가 'Gsk'와 같은 검색 요청을 입력하면 'G'가 대문자로 표시되지만 다른 문자는 그렇지 않은 경우 어떻게됩니까 (문자열이 대소 문자가 혼합되어 있기 때문에, 완전히 대문자 또는 소문자가 아님), 텍스트 파일의 문자열과 정확히 일치하지 않는 경우 (완전히 대문자 또는 소문자 또는 대소 문자 혼합 여부에 관계없이 프로그램은 검색 결과가 없다고보고합니다. -사용 된 검색 알고리즘이 대소 문자를 구분하고 제대로 인식 / 검색하지 못하는 것입니다.
검색 알고리즘 코드 :
Dim lines1() As String = IO.File.ReadAllLines("C:\ProgramData\WPSECHELPER\.data\Outlook Folder Wizard\outlookfolders.txt")
lbx_OFL_Results.Items.Clear()
lbx_OFL_Results.BeginUpdate()
For i As Integer = 0 To lines1.Length - 1
If lines1(i).Contains(tbx_FindText.Text) Then lbx_OFL_Results.Items.Add(lines1(i))
Next
lbx_OFL_Results.EndUpdate()
기본적으로 코드는 직원이 작업을 수행하는 데 필요한 여러 Outlook 폴더 경로가 포함 된 텍스트 파일을 엽니 다. 검색 상자에 회사 이름 또는 참조 번호에 대한 검색을 입력하고 검색 텍스트 상자에 입력 한 키워드가 포함 된 경로의 일치하는 결과로 목록 상자가 채워집니다.
이 부분은 훌륭하게 작동합니다. 예를 들어 내 검색이 대문자로 표시되고 텍스트 파일의 문자열이 그렇지 않은 경우 목록 상자에 결과가 채워지지 않는다는 사실을 제외하면.
누구든지 텍스트 파일을 검색하는 코드를 작성 (또는 재구성)하는 데 도움을 줄 수 있다면 (가능하면 위의 코드를 유지하려고) 검색이 대소 문자를 구분하지 않는 동안 크게 감사하겠습니다.
ReadAllLines
텍스트 파일에서 모든 행을 가져올 필요가 없으므로 함수를 사용하지 마십시오 . 이 함수는 특히 큰 파일을 다룰 때 불필요한 모든 것을 메모리에로드합니다. ReadLines
대신 where
확장 함수 와 함께 사용 하여 일치 항목을 가져옵니다.
Dim path As String = "C:\ProgramData\WPSECHELPER\.data\Outlook Folder Wizard\outlookfolders.txt"
Dim search As String = tbx_FindText.Text
Dim lines = File.ReadLines(path).Where(
Function(l) l.IndexOf(search, 0, StringComparison.InvariantCultureIgnoreCase) >= 0
).ToList
lbx_OFL_Results.DataSource = Nothing
lbx_OFL_Results.DataSource = lines
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다