如何分割这一行?

时间:2016-05-17 09:54:28

标签: c# split

我试图分割这个字符串:

"\"Language\" \"english\""

该行来自本文:

"Language" "english"

从txt文件中读取。

我试过这个:

string[] allParts = line.Split(new char[0], StringSplitOptions.RemoveEmptyEntries);

其中line是包含上述字符串的var。我尝试过的内容让我回到了以下数组:

enter image description here

但我希望将两个字符串分开,并且我无法从中删除"\,并且在另一个我只需要字符串的地方失败。关于如何实现这一目标的任何想法?

我想要这个输出:

allParts[0] --> "Language" 
allParts[1] --> "english"

4 个答案:

答案 0 :(得分:5)

字符串的内容实际上是"Language" "english"

没有反斜杠。 调试器窗口显示反斜杠,因为它会显示字符串文字,就像您在代码中编写它一样:

string s = "\"Language\" \"english\"";

这里使用反斜杠来转义引号(")。简单地用白色空格分割你的字符串:

string[] parts = s.Split(' ');

,结果字符串为"Language""english"(包括那些双引号)。

如果您在控制台(Console.WriteLine(parts[0]);)中输出部件,您将看到此输出:

"Language"
"english"

如果你想摆脱",你可以简单地修剪字符串:

string part0 = parts[0].Trim('"');
string part1 = parts[1].Trim('"');

如果您现在输出part0part1,则会获得此输出:

Language
english

您可以将这两个步骤组合在一起:

string[] parts = s.Split(' ').Select(p => p.Trim('"')).ToArray();

答案 1 :(得分:2)

Trim

只需"
string[] trimmedParts = allParts.Select(p => p.Trim('\"')).ToArray();

或者与您的代码结合使用:

string[] allParts = line
    .Split(new []{' '}, StringSplitOptions.RemoveEmptyEntries)
    .Select(p => p.Trim('\"')).ToArray();

如果你的条款也包含空格,我建议采用这种方法:

string[] allParts = line
    .Split(new []{'\"'}, StringSplitOptions.RemoveEmptyEntries)
    .Where(p => ! String.IsNullOrWhiteSpace(p))
    .Select(p => p.Trim()).ToArray();

如果您的字词也可以包含空格和转义引号,则需要更新您的问题;)

DotNetFiddle Demos

答案 2 :(得分:1)

使用:

 string[] allParts = line.Split(new string[]{ "\" \"", "\""  },StringSplitOptions.RemoveEmptyEntries);

这会给出预期的结果

答案 3 :(得分:1)

var data = "\"Language\" \"english lan\"";
var repStr = data.Split(new char[] { '\"' }, StringSplitOptions.RemoveEmptyEntries).Where(x => !string.IsNullOrWhiteSpace(x));
if (repStr != null)
{ 
    var result = repStr.ToList(); 
}