如何将多行文本框中的文本放入一个字符串?

时间:2010-06-17 10:50:40

标签: c# textbox split newline

我遇到了一些问题。方案是我有一个多行文本框,我想将所有文本放在一个单独的字符串中,没有其中的任何新行。这就是我现在所拥有的:

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

问题是无论我尝试什么和我做什么,我的字符串总会有一个新行(至少我认为?),所以不要得到:

“valuevaluevalue”

我明白了:

“值

值”。

我甚至尝试用string.Replaceregex.Replace替换,但唉也无济于事。请指教。

您诚挚的,
Kevin van Zanten

4 个答案:

答案 0 :(得分:7)

新行必须是“\ r \ n”。更好 - 使用Environment.NewLine

但是代码效率低下,你创建了许多不必要的字符串和一个不必要的数组。只需使用:

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

另一方面,如果您发现自己在字符串上使用+=运算符的次数超过两次,那么您可能应该使用StringBuilder。这是因为字符串是Immutable

答案 1 :(得分:4)

请注意,新行最多可以包含两个字符,具体取决于平台。

您应该替换CR /回车符(ASCII 13)和LF /换行符(ASCII 10)。

我不会像大卫建议的那样依赖本地化数据(除非你的意图是这样);如果您从其他环境(例如来自Windows客户端的数据库)获取文本字符串该怎么办?

我会用:

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

取代所有出现的两个字符而不依赖于顺序。

答案 2 :(得分:2)

试试这个

tbxValueList.Text.Replace(System.Environment.NewLine, "");

答案 3 :(得分:0)

尝试这个

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