문자열에서 줄 바꿈 문자를 제거하는 방법은 무엇입니까?
다음 형식의 문자열이 있습니다
string s = "This is a Test String.\n This is a next line.\t This is a tab.\n'
나는 모든 발생 제거 할 \n
및 \r
위의 문자열에서합니다.
나는 시도 string s = s.Trim(new char[] {'\n', '\r'});
했지만 도움이되지 않았다.
정규식을 사용하고 싶습니다. 이 경우 다음을 수행 할 수 있습니다.
string replacement = Regex.Replace(s, @"\t|\n|\r", "");
정규식은 동적 언어 에서처럼 .NET 세계에서 인기가 없지만 문자열을 조작하는 데 많은 힘을 제공합니다.
String.Replace
캐릭터를 제거하는 데 사용하려고합니다 .
s = s.Replace("\n", String.Empty);
s = s.Replace("\r", String.Empty);
s = s.Replace("\t", String.Empty);
주 String.Trim(params char[] trimChars)
에서만 선행 및 후행 문자를 제거 trimChars
인스턴스가 호출에서.
확장 메소드를 작성하면 많은 임시 문자열을 작성하는 위의 성능 문제를 피할 수 있습니다.
static string RemoveChars(this string s, params char[] removeChars) {
Contract.Requires<ArgumentNullException>(s != null);
Contract.Requires<ArgumentNullException>(removeChars != null);
var sb = new StringBuilder(s.Length);
foreach(char c in s) {
if(!removeChars.Contains(c)) {
sb.Append(c);
}
}
return sb.ToString();
}
나는 이것이 오래된 게시물이라는 것을 알고 있지만 줄 바꿈 문자를 제거하는 데 사용하는 방법을 공유한다고 생각했습니다.
s.Replace(Environment.NewLine, "");
참고 문헌 :
MSDN String.Replace 메서드 및 MSDN Environment.NewLine 속성
속도와 낮은 메모리 사용이 중요한 경우 다음과 같이하십시오.
var sb = new StringBuilder(s.Length);
foreach (char i in s)
if (i != '\n' && i != '\r' && i != '\t')
sb.Append(i);
s = sb.ToString();
그냥 해
s = s.Replace("\n", String.Empty).Replace("\t", String.Empty).Replace("\r", String.Empty);
LINQ 접근 방식 :
string s = "This is a Test String.\n This is a next line.\t This is a tab.\n'";
string s1 = String.Join("", s.Where(c => c != '\n' && c != '\r' && c != '\t'));
올바른 선택은 실제로 입력 문자열의 크기와 perforce 및 메모리 요구 사항에 달려 있지만 다음과 같은 정규 표현식을 사용합니다.
string result = Regex.Replace(s, @"\r\n?|\n|\t", String.Empty);
또는 동일한 교체를 여러 번 적용 해야하는 경우 정규식에 대해 컴파일 된 버전을 사용하는 것이 좋습니다
var regex = new Regex(@"\r\n?|\n|\t", RegexOptions.Compiled);
string result = regex.Replace(s, String.Empty);
참고 : 각기 다른 시나리오는 최상의 성능과 최소 메모리 소비를 달성하기 위해 다른 접근 방식을 필요로합니다.
글쎄 .. 좀 더 구체적인 공간 영역을 이해하고 싶습니다. \t
실제로는 수직 공간이 아닌 수평 공간으로 분류됩니다. ( \t
메모장에 삽입 하여 테스트 )
Java를 사용하는 경우을 사용하십시오 \v
. 아래 참조를 참조하십시오.
\h
-수평 공백 문자 :
[\t\xA0\u1680\u180e\u2000-\u200a\u202f\u205f\u3000]
\v
-수직 공백 문자 :
[\n\x0B\f\r\x85\u2028\u2029]
그러나 .NET을 사용한다는 것을 알고 있습니다. 모든 수직 공간을 교체하는 것에 대한 나의 대답은
string replacement = Regex.Replace(s, @"[\n\u000B\u000C\r\u0085\u2028\u2029]", "");
Trim
시작과 끝에서 제거하려는 경우 사용할 수 있습니다 .
string stringWithoutNewLine = "\n\nHello\n\n".Trim();
참고로,
Trim ()은 이미 그렇게합니다.
다음 LINQPad 샘플 :
void Main()
{
var s = " \rsdsdsdsd\nsadasdasd\r\n ";
s.Length.Dump();
s.Trim().Length.Dump();
}
출력 :
23
18
참고 URL : https://stackoverflow.com/questions/4140723/how-to-remove-new-line-characters-from-a-string
'Programing' 카테고리의 다른 글
정적 라이브러리의 Objective-C 범주 (0) | 2020.06.12 |
---|---|
Ajax post ASP.NET MVC에 antiforgerytoken 포함 (0) | 2020.06.12 |
Eclipse에서 사용하지 않는 가져 오기를 제거하는 방법 (0) | 2020.06.12 |
Netbeans 7 또는 8의 어두운 테마 (0) | 2020.06.12 |
문자열 배열을 List로 변환 (0) | 2020.06.12 |