我有一个如下所示的文本文件。
AIR NEW ZEALAND LIMITED,AIZ,Transportation
" AIRXPANDERS,INC。",AXP,医疗保健设备&服务
ALARA RESOURCES LIMITED,AUQ,Materials
ALCHEMIA LIMITED,ACL," Pharmaceuticals,Biotechnology&生命科学"
ALCHEMY RESOURCES LIMITED,ALY,Materials
它有三列,总是用逗号分隔。但是有一些例外,内容本身包含逗号。该文件已将这些引入一对引号。
如何使用String.Split方法方便地读出列并处理这些异常?
干杯 籍
答案 0 :(得分:1)
不使用拆分字符串,而是使用regular expression和CREATE TABLE t (
Recordid INT,
Price INT,
"Start date" DATE,
"end date" DATE
);
INSERT INTO t VALUES (1, 20, TO_DATE('2017-10-01', 'YYYY-MM-DD'), TO_DATE('2017-10-02', 'YYYY-MM-DD'));
INSERT INTO t VALUES (2, 20, TO_DATE('2017-10-03', 'YYYY-MM-DD'), TO_DATE('2017-10-04', 'YYYY-MM-DD'));
INSERT INTO t VALUES (3, 30, TO_DATE('2017-10-05', 'YYYY-MM-DD'), TO_DATE('2017-10-05', 'YYYY-MM-DD'));
INSERT INTO t VALUES (4, 20, TO_DATE('2017-10-06', 'YYYY-MM-DD'), TO_DATE('2017-10-07', 'YYYY-MM-DD'));
INSERT INTO t VALUES (5, 20, TO_DATE('2017-10-08', 'YYYY-MM-DD'), TO_DATE('2017-10-09', 'YYYY-MM-DD'));
INSERT INTO t VALUES (6, 20, TO_DATE('2017-10-10', 'YYYY-MM-DD'), TO_DATE('2017-10-11', 'YYYY-MM-DD'));
函数提取匹配项。
例如:
Matches
输出:
var input = @"Column1,Column2,""Column,4"",Column4";
var expression = @"""[^""]*""|[^,]+";
var results = Regex.Matches(input, expression);
foreach (var s in results)
{
Console.WriteLine(s);
}
答案 1 :(得分:0)
这看起来像CSV格式。 Import-Csv
应该做到这一点:
$data = Import-Csv -Path your-data.txt -Delimiter ","
Import-Csv
假设第一行包含列标题。如果不是,您可以使用-Header
开关定义标题名称(即-Header:"col1","col2","col3"
)。