WinForms NET 2.0을 사용하고 있습니다. 일부 텍스트에서 주석을 자르기 위해 작은 함수를 코딩하고 있습니다. 선택한 텍스트를 별도의 줄로 나누면 다음과 같이 구분됩니다.C# 문자열에서 주석 제거
- 줄에 설명이 없으면 추가됩니다.
- 줄에 주석이 오는 텍스트가 있으면 주석이 잘린 상태로 추가됩니다.
- 줄이 주석으로 시작하면 추가되지 않습니다. 이것은 if 문에 있습니다.
- 줄이 비어 있으면 추가되지 않습니다. if 문에도 있습니다.
string[] lines = tb.SelectedText.Split('\n'); StringBuilder sb = new StringBuilder(); for (int i = 0; i < lines.Length; i++) { if ((lines[i].Trim() != string.Empty) || !Regex.IsMatch(lines[i], @"^\s*;(.*)$")) { if (Regex.IsMatch(lines[i], @"^(.*);(.*)$")) sb.AppendLine(lines[i].Substring(0, lines[i].IndexOf(';')).Trim()); else sb.AppendLine(lines[i]); } } tb.SelectedText = sb.ToString();
문제는, 의도 한대로 작동하지 않습니다 :
여기 내 코드입니다.
test ;test
test2 ;test
나는이 코멘트를 손질 할 것으로 예상하고 빈 줄을 제거하지만, 빈 줄이 여전히 것 : 나는 다음과 같은 텍스트가있는 경우 가정하자. 왜 이런거야? 라인이 비어 있는지 확인했기 때문에 StringBuilder가 비어있는 경우 라인을 추가해서는 안되지만, 어떤 이유인지는 알 수 없습니다.
또한 어떤 이유로 인해 stringbuilder가 추가 행을 추가합니다. 어떻게 그걸 없앨까요?
'tb.SelectedTExt'에서'\ n'은 확실히 유일한 개행 문자입니까? 예를 들어 '\ r \ n'이 아닌가? –
항상 \ n입니다. – david