다음 형식의 문자열이 있습니다
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, "");
참고 문헌 :
답변
속도와 낮은 메모리 사용이 중요한 경우 다음과 같이하십시오.
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);
참고 : 각기 다른 시나리오는 최상의 성능과 최소 메모리 소비를 달성하기 위해 다른 접근 방식을 필요로합니다.