C# WinForms文本框中的换行符
我在处理断线时遇到了一些麻烦。基本上,用户将一些数据放入文本框,然后直接保存到数据库中 当我在程序中显示数据时,我只想显示文本框的第一行,所以我尝试了C# WinForms文本框中的换行符,c#,regex,winforms,C#,Regex,Winforms,我在处理断线时遇到了一些麻烦。基本上,用户将一些数据放入文本框,然后直接保存到数据库中 当我在程序中显示数据时,我只想显示文本框的第一行,所以我尝试了 Regex newLine = new Regex("/[\r\n]+/"); String[] lines = newLine.Split(row[data.textColumn.ColumnName].ToString()); SomeLabel.Text = lines[0]; 但是它会一行一行地显示给我,所以如果用户输入 a b c
Regex newLine = new Regex("/[\r\n]+/");
String[] lines = newLine.Split(row[data.textColumn.ColumnName].ToString());
SomeLabel.Text = lines[0];
但是它会一行一行地显示给我,所以如果用户输入
a
b
c
将显示标签
abc
我如何才能让它工作,使它只显示第一行
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;
或
(另请参阅我在这里发布的一些扩展方法:)(我在另一个答案中添加了这一点,因为这个答案相当大,我认为这将使这条线索更加清晰-如果我应该给出一个答案,请留下评论)
我提出了这种扩展方法,这种方法通常有其用途:
public static IEnumerable<string> Lines(this string data)
{
using (var sr = new StringReader(data))
{
string line;
while ((line = sr.ReadLine()) != null)
yield return line;
}
}
当只使用一部分行时,这应该比
.Split
快得多。为什么要按行[data.textColumn.ColumnName].ToString()进行拆分?是否需要正则表达式中的第一个和最后一个斜杠?斜杠是正则表达式的分隔符,这就是您编写它的方式,还是我弄错了?
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();