2009-12-30 4 views
45

ASP.NET 텍스트 영역에서 문자열을 유지하려고합니다. 캐리지 리턴 줄 바꿈을 제거한 다음 50 자의 문자열 배열에 남아있는 내용을 분리해야합니다.C#의 문자열에서 " r n"을 어떻게 제거 할 수 있습니까? RegEx를 사용할 수 있습니까?

나는이 지금까지

var commentTxt = new string[] { }; 
var cmtTb = GridView1.Rows[rowIndex].FindControl("txtComments") as TextBox; 
if (cmtTb != null) 
    commentTxt = cmtTb.Text.Length > 50 
     ? new[] {cmtTb.Text.Substring(0, 50), cmtTb.Text.Substring(51)} 
     : new[] {cmtTb.Text}; 

그것은 확인을 작동하지만이 CRLF 문자를 제거하지하고 있습니다. 이 작업을 올바르게 수행하려면 어떻게해야합니까? 샌디에고

감사합니다, 가 ~ CK

답변

84

당신은 정규식을 사용할 수, 그래,하지만 간단한하려면 string.replace()는 아마 충분합니다.

the quick brown fox\r\n 
jumped over the lazy dog\r\n 

이처럼 끝나지 않는다 :

the quick brown foxjumped over the lazy dog 

내가 할 것

myString = myString.Replace("\r\n", string.Empty); 
+48

는 \ "('myString.Replace ("\ r에 ", String.Empty로) .Replace이 될 수 있습니다리눅스, Windows 또는 Mac에서 입력 여부를 지원하는 코드 n ", string.Empty);', 와일드 카드 문자열은 많은 CR/LF 배열을 가질 수 있습니다. –

+1

환경을 사용하는 것이 더 좋지 않습니까? – PostMan

+6

Environment.NewLine은 새로운 라인이 무엇인지에 대한 서버의 생각 일 것입니다. 이 텍스트는 클라이언트에서 왔으며 개행에 다른 문자를 사용할 수 있습니다. 다음은 다양한 브라우저가 새로운 라인에 사용하는 것을 보여주는 대답입니다. http://stackoverflow.com/questions/1155678/javascript-string-newline-character/1156388#1156388 –

1

그렇게 뭔가이 같은 뭔가로 줄 바꿈을 대체 할 가정 다음과 같은 내용 :

string[] SplitIntoChunks(string text, int size) 
{ 
    string[] chunk = new string[(text.Length/size) + 1]; 
    int chunkIdx = 0; 
    for (int offset = 0; offset < text.Length; offset += size) 
    { 
     chunk[chunkIdx++] = text.Substring(offset, size); 
    } 
    return chunk; 
}  

string[] GetComments() 
{ 
    var cmtTb = GridView1.Rows[rowIndex].FindControl("txtComments") as TextBox; 
    if (cmtTb == null) 
    { 
     return new string[] {}; 
    } 

    // I assume you don't want to run the text of the two lines together? 
    var text = cmtTb.Text.Replace(Environment.Newline, " "); 
    return SplitIntoChunks(text, 50);  
} 

구문이 완벽하지 않으면 사과드립니다. C#을 사용할 수있는 컴퓨터가 아닙니다.

18

이렇게하면 줄 바꿈 문자 조합에 문자열을 분할하고 실제로 줄 바꿈이 필요한 공간이 있다고 가정 할 때 문자열을 공백 문자와 결합합니다.

var oldString = "the quick brown\rfox jumped over\nthe box\r\nand landed on some rocks."; 
var newString = string.Join(" ", Regex.Split(oldString, @"(?:\r\n|\n|\r)")); 
Console.Write(newString); 

// prints: 
// the quick brown fox jumped over the box and landed on some rocks. 
+0

The Better Choice ... ever! –

+0

고맙습니다, 저에게 많은 시간을 절약 해 줬습니다! – Munchies

+0

이것은 내가 가장 도움이되었습니다. – OneHoopyFrood

33

.Trim() 함수가 모든 작업을 수행합니다!

위의 코드를 "트림"함수 다음에 시도했지만 대체 코드에 도달하기 전에 "깨끗한"것으로 나타났습니다.

String input:  "This is an example string.\r\n\r\n" 
Trim method result: "This is an example string." 

출처 : http://www.dotnetperls.com/trim

+11

-1 이것은 문자열의 시작과 끝에서만 작동하기 때문에. – im1dermike

+1

@ im1dermike 나는 downvote가 약간 불필요하다고 생각한다. 나는 이것을 발견하고 그것을 사용했다. 내 경우에 가장 좋은 옵션이다. –

+3

@SeanMissingham 그냥 대답이 불충분하기 때문에 좋은 대답이 아니란 것만은 아니다. – im1dermike

14
이에 대한

좋네요 코드 :

yourstring = yourstring.Replace(System.Environment.NewLine, string.Empty); 
+0

THANX..it Worked –

+9

-1 : 텍스트가 동일한 환경에서 작성된 경우에만 작동합니다. –

2

이 시도 :

여기
private void txtEntry_KeyUp(object sender, KeyEventArgs e) 
    { 
     if (e.KeyCode == Keys.Enter) 
     { 
      string trimText; 

      trimText = this.txtEntry.Text.Replace("\r\n", "").ToString(); 
      this.txtEntry.Text = trimText; 
      btnEnter.PerformClick(); 
     } 
    } 
+1

Replace ("\ r", "") .Replace ("\ n", "")를 사용하여 플랫폼 특정 계열의 끝 시퀀스를 더 광범위하게 지원할 수 있습니다. –

1

는 완벽한 방법

입니다 참고 Environment.NewLine에서 작동합니다 마이크로 플랫폼. 당신이 별도의 기능에 N \ R 및 \ 를 추가 할 필요가 위에 외에도

!여기

당신이 더 나은

  var stringTest = "\r Test\nThe Quick\r\n brown fox"; 
      Console.WriteLine("Original is:"); 
      Console.WriteLine(stringTest); 
      Console.WriteLine("-------------"); 
      stringTest = stringTest.Trim().Replace("\r", string.Empty); 
      stringTest = stringTest.Trim().Replace("\n", string.Empty); 
      stringTest = stringTest.Replace(Environment.NewLine, string.Empty); 
      Console.WriteLine("Output is : "); 
      Console.WriteLine(stringTest); 
      Console.ReadLine(); 
관련 문제