Разрыв строки в текстовом поле WinForms - PullRequest
3 голосов
/ 20 августа 2010

У меня возникли проблемы с переводом строки. Обычно пользователь вводит некоторые данные в текстовое поле, которое затем сохраняется непосредственно в базе данных.

Когда я отображаю данные в моей программе, я хочу отображать только первую строку текстового поля, поэтому я попытался

Regex newLine = new Regex("/[\r\n]+/");
String[] lines = newLine.Split(row[data.textColumn.ColumnName].ToString());
SomeLabel.Text = lines[0];

Но он отображает все строки подряд, поэтому, если пользователь вводит

a
b
c

На этикетке отображается

abc

Как мне заставить это работать так, чтобы оно отображало только первую строку?

Ответы [ 2 ]

2 голосов
/ 20 августа 2010

(я добавил это в другом ответе, потому что этот ответ довольно большой, и я думаю, что это сделает эту ветку более ясной - оставьте комментарий, если я должен сделать это одним ответом)

Я сделал этот метод расширения, который часто использует:

public static IEnumerable<string> Lines(this string data)
{
    using (var sr = new StringReader(data))
    {
        string line;

        while ((line = sr.ReadLine()) != null)
            yield return line;
    }
}

И вы можете получить первую строку с помощью:

var line = data.Lines().First();

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

1 голос
/ 20 августа 2010
var data = row[data.textColumn.ColumnName].ToString();

И один из них (оба работают с разделителями строк Unix и Windows).Первый самый быстрый, потому что он не разбивает каждую строку, когда вы используете только первый.

int min = Math.Min(data.IndexOf("\r\n"), data.IndexOf("\n"));

string line;

if (min != -1)
    line = data.Substring(0, min);
else
    line = data;

или

var lines = data.Split(new[] { "\r\n", "\n" }, StringSplitOptions.None);
var line = lines[0];

(см. Также несколько методов расширения, которые я разместил здесь: Как мне преобразовать строку с новыми строками в нее в отдельные строки? )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...