如何在两个选项卡之间查找文本

时间:2017-09-18 13:11:24

标签: c# parsing text

我有一个类似于以下内容的文件:

Tomas | Nordstrom |瑞典|欧洲|世界

(上面一行中的字符“|”代表一个标签,新列)

现在我想要一个只包含第4列中文本的字符串。

我已成功找到该行中某个位置的字符。但是该点根据每列中的och字符数而变化。 我真的需要一些不错的输入。

提前致谢。

/托马斯

2 个答案:

答案 0 :(得分:1)

可以使用Split方法完成此操作:

string s = "Tomas|Nordstrom|Sweden|Europe|World";
string[] stringArray = s.Split( new string[] { "|" }, StringSplitOptions.None );

Console.WriteLine( stringArray[3] );

这将打印出“Europe”,因为它位于stringArray中的索引3处。

编辑:

使用正则表达式可以实现同样的目的:

string[] stringRegex = Regex.Split( s, @"\|+" );

答案 1 :(得分:0)

基本算法将迭代字符,直到找到n-1个标签,然后将字符带到下一个标签或字符串的结尾。

根据要求,如果性能至关重要,您可能需要手动实施扫描算法。

你可能会惊讶于字符串拆分的速度有多慢。嗯 - 它本身并非不是,但整体方法需要:

  • 扫描到字符串的末尾
  • 在堆上创建所有拆分部件
  • 收集垃圾

考虑以下两种方法的基准:

C2

在纯C#中实现的扫描算法在我的笔记本电脑上优于在低级别上实现的分割效果4.6:

=vlookup(A2, $C$2:$C$238,1,FALSE)