我的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>
的单行内容是什么?
答案 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代码中得到了很多这样的例子......)并且不会丢弃任何行。