【发布时间】:2020-11-27 14:05:09
【问题描述】:
我有一份药物清单,每行包含其商业名称、INN、剂量和形式等。
00148ASPEGIC ACETYLSALICYLATE DE LYSINE 900 MG B/6 O 0 071 OOO 05703A00497 P
00149SPRIDOL ACETYLSALICYLATE DE LYSINE 900 MG B/6 O 0 004 OOO 19303A00499 G
00150SPRIDOL ACETYLSALICYLATE DE LYSINE 900MG MG B/1 O 0 004 OOO 19303A00499 G
00151ASPEGIC ACETYLSALCICYLATE DE LYSINE 1 G B/6 AMP O 0 071 OO 05703A02398 P
00152ASPEGIC ACETYLSALICYLATE DE LYSINE 250MG MG B/20 SACHETS O19072003 11760 047 OOO 25503A0240302102008 P 10
00153ASPEGIC ACETYLSALICYLATE DE LYSINE 500MG MG B/20 O 6680 047 OOO 05703A02597 P213 10
我只需要从前五列中检索数据,如下所示:
ASPEGIC | ACETYLSALCICYLATE DE LYSINE | 1G | B/6 AMP
到目前为止我用来分割的代码是
using (StreamReader sr = new StreamReader("medic.txt"))
{
while (sr.Peek() > 0)
{
string line = sr.ReadLine();
var pts = line.Split(" ", StringSplitOptions.RemoveEmptyEntries);
Array.ForEach(pts, Console.WriteLine);
}
}
【问题讨论】:
-
那么,您的问题是什么?
-
不要使用 Split()。您需要 SubString() 和 Trim()。或使用TextFieldParser。
-
Hans 是对的,在您的示例中,空格用于对齐“列”,但也可以作为数据输入的一部分。因此,您需要定义列位置并在其上使用
SubString()。 -
@WiktorStribiżew 这是一个非常糟糕的建议,如果列几乎完全或完全填充字符怎么办。
-
@HansPassant 感谢您的建议