字符串拆分为数组不起作用

本文关键字:不起作用 数组 拆分 字符串 | 更新日期: 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"。

(应该注意的是,你也可以用字符串来做到这一点,而不会将所有内容都变成字符数组,这个原则仍然成立)