C# 如何将多行文本框中的文本放入一个字符串中?
我面临着一个小问题。场景是,我有一个多行文本框,我想把所有文本放在一个字符串中,,其中没有任何新行。这就是我目前的情况:C# 如何将多行文本框中的文本放入一个字符串中?,c#,textbox,split,newline,C#,Textbox,Split,Newline,我面临着一个小问题。场景是,我有一个多行文本框,我想把所有文本放在一个字符串中,,其中没有任何新行。这就是我目前的情况: string[] values = tbxValueList.Text.Split('\n'); foreach (string value in values) { if (value != "" && value != " " &&
string[] values = tbxValueList.Text.Split('\n');
foreach (string value in values)
{
if (value != "" && value != " " && value != null && value != "|")
{
valueList += value;
}
}
问题是,无论我尝试什么,做什么,我的字符串中总是有一行新行(至少我认为是这样),因此不是得到:
string[] values = tbxValueList.Text.Split('\n');
foreach (string value in values)
{
if (value != "" && value != " " && value != null && value != "|")
{
valueList += value;
}
}
“价值”
string[] values = tbxValueList.Text.Split('\n');
foreach (string value in values)
{
if (value != "" && value != " " && value != null && value != "|")
{
valueList += value;
}
}
我得到:
string[] values = tbxValueList.Text.Split('\n');
foreach (string value in values)
{
if (value != "" && value != " " && value != null && value != "|")
{
valueList += value;
}
}
“价值值
价值观”
string[] values = tbxValueList.Text.Split('\n');
foreach (string value in values)
{
if (value != "" && value != " " && value != null && value != "|")
{
valueList += value;
}
}
我甚至试着用string.replace
和regex.replace
替换,但可惜没有用。请告知
string[] values = tbxValueList.Text.Split('\n');
foreach (string value in values)
{
if (value != "" && value != " " && value != null && value != "|")
{
valueList += value;
}
}
您诚挚的,Kevin van Zanten新行需要是“\r\n”。更好-使用
Environment.NewLine
string[] values = tbxValueList.Text.Split('\n');
foreach (string value in values)
{
if (value != "" && value != " " && value != null && value != "|")
{
valueList += value;
}
}
虽然代码效率很低,但您正在创建大量不必要的字符串和不必要的数组。只需使用:
string[] values = tbxValueList.Text.Split('\n');
foreach (string value in values)
{
if (value != "" && value != " " && value != null && value != "|")
{
valueList += value;
}
}
tbxValueList.Text.Replace(Environment.NewLine, String.Empty);
另一方面,如果您在字符串上多次使用+=
运算符,那么您可能应该使用StringBuilder
。这是因为字符串是空的。试试这个
string[] values = tbxValueList.Text.Split('\n');
foreach (string value in values)
{
if (value != "" && value != " " && value != null && value != "|")
{
valueList += value;
}
}
tbxValueList.Text.Replace(System.Environment.NewLine, "");
请注意,新行最多可以包含两个字符,具体取决于平台
string[] values = tbxValueList.Text.Split('\n');
foreach (string value in values)
{
if (value != "" && value != " " && value != null && value != "|")
{
valueList += value;
}
}
您应该同时替换CR/回车符(ASCII 13)和LF/换行符(ASCII 10)
string[] values = tbxValueList.Text.Split('\n');
foreach (string value in values)
{
if (value != "" && value != " " && value != null && value != "|")
{
valueList += value;
}
}
我不会像大卫建议的那样依赖本地化数据(除非这是你的意图);如果您从不同的环境获取文本字符串,例如从来自Windows客户端的DB获取文本字符串,该怎么办
string[] values = tbxValueList.Text.Split('\n');
foreach (string value in values)
{
if (value != "" && value != " " && value != null && value != "|")
{
valueList += value;
}
}
我会使用:
string[] values = tbxValueList.Text.Split('\n');
foreach (string value in values)
{
if (value != "" && value != " " && value != null && value != "|")
{
valueList += value;
}
}
tbxValueList.Text.Replace((Char)13,"").Replace((Char)10,"");
这将替换两个字符的所有匹配项,而不受顺序的影响。也可以尝试此项
string[] values = tbxValueList.Text.Split('\n');
foreach (string value in values)
{
if (value != "" && value != " " && value != null && value != "|")
{
valueList += value;
}
}
string[] values = tbxValueList.Text.Replace("\r\n", " ").Split(' ');
啊!戴维在我之前就到了。很好,我以前从来没有理由考虑过。1我会记住这一点,但对于目前的项目来说,这是不必要的。谢谢你!当时我完全错了。我没有更改
“\n”
位,而是把结果弄乱了。你刚刚解除了我的头痛,非常感谢<代码>tbxValueList.Text.Split(“\r\n”,StringSplitOptions.None)代码>也会做同样的事情。这不是OP想要做的,这只是他最初解决方案的一部分。