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想要做的,这只是他最初解决方案的一部分。