字符串拆分为数组不起作用
本文关键字:不起作用 数组 拆分 字符串 | 更新日期: 2023-09-27 18:31:45
我正在尝试将文本文件中的字符串拆分为数组,以便我可以将它们存储在类中,但它不起作用;它不会拆分它,而是在文本文件中返回相同的格式.txt
using (StreamReader reader = new StreamReader("textfile.txt"))
{
string line;
while ((line = reader.ReadLine()) != null)
{
char[] delimiters = new char[] { ''t' };
string[] parts = line.Split(delimiters, StringSplitOptions.RemoveEmptyEntries);
for (int i = 0; i < parts.Length; i++)
{
MessageBox.Show(parts[i]);
}
}
}
该文本文件包含:
George't15'tStudent'tAddress'tB:'temp'profilepic.png
我希望它看起来像这样(拆分后):
George
15
Student
Address
profilepic.png
任何想法或帮助表示赞赏。
"
''t"是一个特殊字符,意思是"制表符"。 如果要实际查找字符串't
则需要使用 "''t"
或 @"'t"
。 您也不需要将其设为字符数组;字符串存在重载。
使用您提供的示例行,我认为您可以获得的最接近的可能是使用以下正则表达式,也许如果您使用它,您可以让它不给你路径,或者,在您的循环中您可以检查路径并跳过它,这应该告诉您它是否是路径[a-zA-Z]:'''w*?''
string[] results = Regex.Split(line, @"(?<!B:)''t|(?<=B:'''w*?'')");
它生成以下列表:
- 乔治
- 15
- 学生
- 地址
- B:''temp''
- 简介.png
您应该使用"''t"
作为拆分字符串。 你应该得到:
乔治
15
学生
地址
乙:
emp''profilepic.png
不简介.png
编辑:"''t"
在我的答案中显示为"'t"
您在这里遇到的问题是转义序列。以 ''
' 开头的字符组合被视为转义序列,它们的作用与常规字符串不同。从链接中的表格中可以看出,"'t
"表示水平选项卡。因此,当您在 C# 中使用 ' 't
' 作为分隔符时,它会查找一个水平制表符,但是您的明文中包含字符 ' 't
' 的实际序列,这就是您要查找的内容。
那么问题就变成了,如果我使用它作为分隔符时它搜索水平制表符,我如何找到"'t
"?答案也显示在链接中;"''
"是"'
"的表示(如果你考虑一下,这是必要的,否则你怎么能寻找"'(anything)
"。所以你的分隔符必须是"''t
"。
(应该注意的是,你也可以用字符串来做到这一点,而不会将所有内容都变成字符数组,这个原则仍然成立)