我试图分割这个字符串:
"\"Language\" \"english\""
该行来自本文:
"Language" "english"
从txt文件中读取。
我试过这个:
string[] allParts = line.Split(new char[0], StringSplitOptions.RemoveEmptyEntries);
其中line
是包含上述字符串的var。我尝试过的内容让我回到了以下数组:
但我希望将两个字符串分开,并且我无法从中删除"\
,并且在另一个我只需要字符串的地方失败。关于如何实现这一目标的任何想法?
我想要这个输出:
allParts[0] --> "Language"
allParts[1] --> "english"
答案 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('"');
如果您现在输出part0
和part1
,则会获得此输出:
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();
如果您的字词也可以包含空格和转义引号,则需要更新您的问题;)
答案 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();
}