Как поместить текст из многострочного текстового поля в одну строку? - PullRequest
0 голосов
/ 17 июня 2010

Я столкнулся с небольшой проблемой. Сценарий состоит в том, что у меня есть многострочное текстовое поле, и я хочу поместить весь этот текст в одну строку, без любых новых строк в нем. Вот что у меня на данный момент:

string[] values = tbxValueList.Text.Split('\n');                
            foreach (string value in values)
            {
                if (value != "" && value != " " && value != null && value != "|")
                {
                    valueList += value;
                }
            }

Проблема в том, что независимо от того, что я пытаюсь и что я делаю, всегда есть новая строка (по крайней мере, я так думаю?) В моей строке, поэтому вместо получения:

"valuevaluevalue"

Я получаю:

"значение
Значение
значение».

Я даже пытался заменить на string.Replace и regex.Replace, но, увы, безрезультатно. Пожалуйста, сообщите.

С уважением,
Кевин ван Зантен

Ответы [ 4 ]

7 голосов
/ 17 июня 2010

Новая строка должна быть "\ r \ n".Еще лучше - используйте Environment.NewLine.

Код неэффективен, хотя вы создаете множество ненужных строк и ненужный массив.Просто используйте:

tbxValueList.Text.Replace(Environment.NewLine, String.Empty);

В другой заметке, если вы когда-либо видели, что используете оператор += в строке более двух раз, вам, вероятно, следует использовать StringBuilder.Это потому, что строки неизменны .

4 голосов
/ 17 июня 2010

Обратите внимание, что новые строки могут содержать до двух символов в зависимости от платформы.

Вы должны заменить как CR / возврат каретки (ASCII 13), так и LF / перевод строки (ASCII 10).

Я бы не стал полагаться на локализованные данные, как предлагает Дэвид (если только это не было вашим намерением);Что, если вы получаете текстовую строку из другой среды, например, из БД, полученной из клиента Windows?

Я бы использовал:

tbxValueList.Text.Replace((Char)13,"").Replace((Char)10,"");

Это заменяет все вхожденияобоих символов независимо от порядка.

2 голосов
/ 17 июня 2010

Попробуйте это

tbxValueList.Text.Replace(System.Environment.NewLine, "");
0 голосов
/ 17 июня 2010

попробуйте это тоже

 string[] values = tbxValueList.Text.Replace("\r\n", " ").Split(' ');
...