C #의 문자열 내에서 줄 바꿈을 어떻게 바꿀 수 있습니까?
C #의 문자열 내에서 줄 바꿈을 어떻게 바꿀 수 있습니까?
답변:
다음으로 교체 사용 Environment.NewLine
myString = myString.Replace(System.Environment.NewLine, "replacement text"); //add a line terminating ;
다른 게시물에서 언급했듯이 문자열이 다른 환경 (OS)에서 온 경우 줄 바꾸기 문자 의 특정 환경 구현을 대체해야합니다 .
지금까지 게시 된 솔루션은 Environment.NewLine
거나 string.Replace
여러 번 호출하여 교체 문자열에 줄 바꿈이 포함되어 있으면 실패합니다 .
다음은 정규 표현식을 사용하여 세 번의 교체를 모두 한 번에 문자열로 전달하는 솔루션입니다. 이는 교체 문자열에 줄 바꿈이 안전하게 포함될 수 있음을 의미합니다.
string result = Regex.Replace(input, @"\r\n?|\n", replacementString);
The.Anyi.9의 답변을 확장하려면 일반적으로 사용 되는 다른 유형의 줄 바꿈 도 알고 있어야 합니다 . 파일의 출처에 따라 모든 대안을 찾아야 할 수도 있습니다 ...
string replaceWith = "";
string removedBreaks = Line.Replace("\r\n", replaceWith).Replace("\n", replaceWith).Replace("\r", replaceWith);
당신이 갈 것입니다 ...
Line.Replace("\n", replaceWith).Replace("\r", replaceWith);
충분?
\r\n
교체 문자열이 두 번 나오게 되므로 이상적이지 않습니다.
문자열에 줄 바꿈을 삽입하고 싶지만 문자열에서 줄 바꿈을 모두 제거하지 않으려는 경우 Environment.Newline을 사용합니다.
플랫폼에 따라 다른 유형의 개행을 가질 수 있지만 동일한 플랫폼 내에서도 종종 다른 유형의 개행이 사용됩니다. 특히 파일 형식과 프로토콜을 다룰 때.
string ReplaceNewlines(string blockOfText, string replaceWith)
{
return blockOfText.Replace("\r\n", replaceWith).Replace("\n", replaceWith).Replace("\r", replaceWith);
}
코드가 다른 환경에서 실행되어야하는 경우 Environment.NewLine
상수 newline
는 특정 환경에서 사용 되기 때문에 상수를 사용하는 것이 좋습니다.
line = line.Replace(Environment.NewLine, "newLineReplacement");
그러나 다른 시스템에서 생성 된 파일에서 텍스트를 가져 오면 정답이 아닐 수 있으므로 다른 시스템에서 사용되는 줄 바꿈 상수로 바꾸어야합니다. 일반적으로 \n
또는 \r\n
입니다.
replace는 문자열에서 교체를 수행하지 않지만 문자가 교체 된 새 문자열을 반환한다는 것을 잊지 마십시오. 다음은 줄 바꿈을 제거합니다 (바꾸지 않음). @Brian R. Bondy의 방법을 확장 방법으로 싸서 다른 것으로 대체하는 경우 사용합니다. Replace 또는 제공된 확장 메서드를 호출하기 전에 먼저 null 값을 확인해야합니다.
string line = ...
line = line.Replace( "\r", "").Replace( "\n", "" );
확장 방법으로 :
public static class StringExtensions
{
public static string RemoveLineBreaks( this string lines )
{
return lines.Replace( "\r", "").Replace( "\n", "" );
}
public static string ReplaceLineBreaks( this string lines, string replacement )
{
return lines.Replace( "\r\n", replacement )
.Replace( "\r", replacement )
.Replace( "\n", replacement );
}
}
''
C # 에는 가질 수 없습니다 -빈 문자와 같은 것은 없습니다. 것 '\0'
대신에 일을?
string.Empty
이 나아 졌다면 꼭 사용하십시오.
가능한 모든 줄 바꿈 방법 (Windows, Mac 및 Unix)을 바꾸려면 다음을 사용해야합니다.
string.Replace("\r\n", "\n").Replace('\r', '\n').Replace('\n', 'replacement');
이 순서대로 줄 끝 문자 조합을 찾을 때 줄 바꿈을 추가하지 않기 위해.
새 줄을 "정리"하려면 정규식을 사용하는 flamebaud 주석 @"[\r\n]+"
이 최선의 선택입니다.
using System;
using System.Text.RegularExpressions;
class MainClass {
public static void Main (string[] args) {
string str = "AAA\r\nBBB\r\n\r\n\r\nCCC\r\r\rDDD\n\n\nEEE";
Console.WriteLine (str.Replace(System.Environment.NewLine, "-"));
/* Result:
AAA
-BBB
-
-
-CCC
DDD---EEE
*/
Console.WriteLine (Regex.Replace(str, @"\r\n?|\n", "-"));
// Result:
// AAA-BBB---CCC---DDD---EEE
Console.WriteLine (Regex.Replace(str, @"[\r\n]+", "-"));
// Result:
// AAA-BBB-CCC-DDD-EEE
}
}
나는 대체하는 데 필요한 \r\n
실제 캐리지 리턴과 라인 피드와 교체 \t
실제 탭. 그래서 나는 다음을 생각해 냈습니다.
public string Transform(string data)
{
string result = data;
char cr = (char)13;
char lf = (char)10;
char tab = (char)9;
result = result.Replace("\\r", cr.ToString());
result = result.Replace("\\n", lf.ToString());
result = result.Replace("\\t", tab.ToString());
return result;
}
새로운 라인으로로 구분 될 수있다 \n
, \r
및 \r\n
우선 교체거야 \r
와 \r\n
함께\n
데이터 문자열 만 나눕니다.
다음 줄은 parseCSV
메소드 로 이동해야합니다 .
function parseCSV(data) {
//alert(data);
//replace UNIX new lines
data = data.replace(/\r\n/g, "\n");
//replace MAC new lines
data = data.replace(/\r/g, "\n");
//split into rows
var rows = data.split("\n");
}
string s = Regex.Replace(source_string, "\n", "\r\n");
또는
string s = Regex.Replace(source_string, "\r\n", "\n");
당신이 가고 싶은 방법에 따라.
도움이되기를 바랍니다.
또 다른 옵션은 StringReader
해당 문자열을 초과하는 것입니다. 리더 .ReadLine()
에서 루프를 수행하십시오. 그런 다음 구분 기호가 무엇이든 (일관 적이거나 일관되지 않은) 구분선이 있습니다. 이를 통해 원하는대로 진행할 수 있습니다. 하나의 가능성은 StringBuilder
전화 를 사용하는 것입니다.AppendLine
하는 것입니다.
장점은 "줄 바꿈"을 구성하는 프레임 워크를 프레임 워크에서 결정하도록하는 것입니다.
줄 바꿈 만 바꾸려면 :
var input = @"sdfhlu \r\n sdkuidfs\r\ndfgdgfd";
var match = @"[\\ ]+";
var replaceWith = " ";
Console.WriteLine("input: " + input);
var x = Regex.Replace(input.Replace(@"\n", replaceWith).Replace(@"\r", replaceWith), match, replaceWith);
Console.WriteLine("output: " + x);
줄 바꿈, 탭 및 공백을 바꾸려면 다음을 수행하십시오.
var input = @"sdfhlusdkuidfs\r\ndfgdgfd";
var match = @"[\\s]+";
var replaceWith = "";
Console.WriteLine("input: " + input);
var x = Regex.Replace(input, match, replaceWith);
Console.WriteLine("output: " + x);