web-dev-qa-db-ja.com

C#の文字列から「\ r \ n」を削除するにはどうすればよいですか?正規表現を使用できますか?

ASP.NETテキストエリアから文字列を永続化しようとしています。キャリッジリターンラインフィードを削除し、残りを50文字の文字列配列に分割する必要があります。

これまでのところ

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文字を削除していません。これを正しく行うにはどうすればよいですか?

53
Hcabnettek

はい、正規表現を使用できますが、おそらく単純なstring.Replace()で十分でしょう。

 myString = myString.Replace("\r\n", string.Empty);
99
Matt Greer

.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

43
dimazaid

これは、改行文字の任意のコンボで文字列を分割し、スペースで結合します。実際には、改行があったはずのスペースが必要だと仮定します。

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.
23
Chris

これのより良いコード:

yourstring = yourstring.Replace(System.Environment.NewLine, string.Empty);
23
alonp

これを試して:

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();
        }
    }
2
Fred Conklin

改行をsomethingで置き換えると仮定すると、次のようになります。

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

このようにはなりません:

the quick brown foxjumped over the lazy dog

私は次のようなことをします:

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#が利用可能なマシンにはいません。

1
Matt McClellan

これが完璧な方法です。

Environment.NewLineMicrosoftプラットフォームで動作することに注意してください。

上記に加えて、\ rおよび\ nseparate関数に追加する必要があります!

Linux、Windows、またはMacで入力するかどうかをサポートするコードを次に示します。

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();
1
vibs2006

つかいます:

string json = "{\r\n \"LOINC_NUM\": \"10362-2\",\r\n}";
var result = JObject.Parse(json.Replace(System.Environment.NewLine, string.Empty));
0