Как я могу удалить “\\r\n” из строки в C#? Я могу использовать регулярное выражение?

Я пытаюсь сохранить строку от текстовой области 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
задан Peter Mortensen 18 March 2019 в 05:57
поделиться

3 ответа

Это разбивает строку на любую комбинацию новых символов строки и соединяет их пробелом, предполагая, что вам действительно нужен пробел, где бы новые строки были.

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.
25
ответ дан 7 November 2019 в 08:16
поделиться

Предположим, вы хотите заменить новые строки на что-то , чтобы что-то подобное:

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
ответ дан 7 November 2019 в 08:16
поделиться
[

] Можно использовать регекс, да, но простой string.Replace(), вероятно, будет достаточно.[

] [
 myString = myString.Replace("\r\n", string.Empty);
]
100
ответ дан 7 November 2019 в 08:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: