development

문자열 C #에서 줄 바꿈 바꾸기

big-blog 2020. 2. 14. 23:42
반응형

문자열 C #에서 줄 바꿈 바꾸기


C #의 문자열 내에서 줄 바꿈을 바꾸려면 어떻게해야합니까?


다음으로 교체 사용 Environment.NewLine

myString = myString.Replace(System.Environment.NewLine, "replacement text")

다른 게시물에서 언급했듯이 문자열이 다른 환경 (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);

당신이 갈 것입니다 ...


문자열에 줄 바꿈을 삽입하고 싶지만 문자열에서 줄 바꿈을 모두 제거하지 않으려는 경우 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 );
   }
}

가능한 모든 줄 바꿈 방법 (Windows, Mac 및 Unix)을 바꾸려면 다음을 사용해야합니다.

string.Replace("\r\n", "\n").Replace('\r', '\n').Replace('\n', 'replacement');

이 순서대로 줄 끝 문자 조합을 찾을 때 줄 바꿈을 추가하지 않도록하십시오.


나는 대체하는 데 필요한 \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;
}

왜 모두?

string ReplacementString = "";

Regex.Replace(strin.Replace(System.Environment.NewLine, ReplacementString), @"(\r\n?|\n)", ReplacementString);

참고 : 교체 strin하여 입력 문자열의 이름으로.


var answer = Regex.Replace(value, "(\n|\r)+", replacementString);

새 줄을 "정리"하려면 정규식을 사용하는 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
  }
}

.Replace () 메소드를 사용하십시오.

Line.Replace("\n", "whatever you want to replace with");

줄 바꿈을 안전하게 대체하는 가장 좋은 방법은

yourString.Replace("\r\n","\n") //handling windows linebreaks
.Replace("\r","\n")             //handling mac linebreaks

줄 바꿈으로 \ n 만 (예 : 줄 바꿈) 문자열을 생성해야합니다. 이 코드는 혼합 줄 바꿈을 수정하는 데 유용합니다.


줄 바꿈은 \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()에서 루프를 수행하십시오. 그런 다음 구분 기호가 무엇이든 (일관 적이거나 일관되지 않은) 구분선이 있습니다. 이를 통해 원하는대로 진행할 수 있습니다. 한 가지 가능성은 a를 사용 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);

참고 URL : https://stackoverflow.com/questions/238002/replace-line-breaks-in-a-string-c-sharp



반응형