당신은 할 수 Regex.Replace를 사용하십시오.
Dim s As String = "SECTIONSHOMESEARCHSKIP TO CONTENTSKIP TO NAVIGATIONVIEW MOBILE VERSION SETTINGS Loading... MAGAZINE JUNE 11, 2014 Photo Credit Jude Edginton for The New York Times Continue reading the main storyContinue reading the main story Talk Intervie..."
Dim r = Regex.Replace(s, "[ ]{2,}", " "c)
Console.WriteLine(r)
=> SECTIONSHOMESEARCHSKIP TO CONTENTSKIP TO NAVIGATIONVIEW MOBILE VERSION SETTINGS Loading... MAGAZINE JUNE 11, 2014 Photo Credit Jude Edginton for The New York Times Continue reading the main storyContinue reading the main story Talk Intervie...
Regex.Replace "[ ]{2,}", " "c
은 두 개 또는 그 이상의 공백을 찾아 하나의 공백 문자로 바꾸는 것을 의미합니다.
편집 나는 정규식과 팀 Schmelter에 의해 제안 된 string.Join/분할을 기반으로 솔루션 사이의 성능 차이가 무엇인지 궁금했다. 선을 분리하고 배열을 만든 다음 모든 것을 다시 합치는 데 필요한 모든 작업에도 불구하고 제안 된 방식의 Tim이 빠릅니다.
Dim sw = new Stopwatch()
sw.Start()
for i = 0 to 1000000
Dim r = Regex.Replace(s, "[ ]{2,}", " "c)
Next
sw.Stop
Console.WriteLine("Regex:" & sw.ElapsedMilliseconds)
sw = new Stopwatch()
sw.Start()
for i = 0 to 1000000
s = String.Join(" ", s.Split({" "c}, StringSplitOptions.RemoveEmptyEntries))
Next
sw.Stop
Console.WriteLine("Split/Join: " & sw.ElapsedMilliseconds)
출력은 내 PC
Regex: 6265
Split/Join: 3745
에 차이 중 일부는 너무 3-2 + 1 = 2 단지 두 번 교체 실행, 사실 3 개 공간에 있습니다. 처음부터 길이가 259에서 247로 바뀌어 작동합니다. 또는'Do While s.Contains ("") // Replace // End Loop' – Plutonix