如何从多行TextBox中将字符串拆分为List <string>,将'\ n \ r'添加为行结尾?</string>

时间:2009-11-12 15:55:14

标签: c# arrays string

我的XAML文件中有一个文本框:

<TextBox 
             VerticalScrollBarVisibility="Visible" 
             AcceptsReturn="True" 
             Width="400" 
             Height="100" 
             Margin="0 0 0 10" 
             Text="{Binding ItemTypeDefinitionScript}"
             HorizontalAlignment="Left"/>

我使用该字符串发送给CreateTable(string),然后调用CreateTable(List<string>)

public override void CreateTable(string itemTypeDefinitionScript)
{
    CreateTable(itemTypeDefinitionScript.Split(Environment.NewLine.ToCharArray()).ToList<string>());
}

public override void CreateTable(List<string> itemTypeDefinitionArray)
{
    Console.WriteLine("test: " + String.Join("|", itemTypeDefinitionArray.ToArray()));
}

问题是字符串显然在每一行的末尾都有'\ n \ r',所以Split('\ n')只得到其中一个,就像Split('\ r')和使用Environment一样。 Newline.ToCharArray()当我输入:

one
two
three

产生这个:

one||two||three

但我希望它能产生这个:

one|two|three

简单地将带有“\n\r”结尾的字符串解析为List<string>的单行内容是什么?

4 个答案:

答案 0 :(得分:37)

这样的事情可行:

string input = "line 1\r\nline 2\r\n";
List<string> list = new List<string>(
                           input.Split(new string[] { "\r\n" }, 
                           StringSplitOptions.RemoveEmptyEntries));

"\r\n"替换为适合您需要的分隔符字符串。

答案 1 :(得分:12)

试试这个:

List<string> list = new List<string>(Regex.Split(input, Environment.NewLine));

答案 2 :(得分:7)

使用以string[]作为分隔符的string.Split重载:

itemTypeDefinitionScript.Split(new [] { Environment.NewLine }, 
                               StringSplitOptions.RemoveEmptyEntries);

答案 3 :(得分:4)

次要补充:

List<string> list = new List<string>(
                           input.Split(new string[] { "\r\n", "\n" }, 
                           StringSplitOptions.None));

将捕获没有“\ r \ n”的情况(我从古代FORTRAN FIFO代码中得到了很多这样的例子......)并且不会丢弃任何行。