我有一个包含以下内容的txt文件
SELECT TOP 20 personid AS "testQu;otes"
FROM myTable
WHERE lname LIKE '%pi%' OR lname LIKE '%m;i%';
SELECT TOP 10 personid AS "testQu;otes"
FROM myTable2
WHERE lname LIKE '%ti%' OR lname LIKE '%h;i%';
............
上述查询可以是任何合法的SQl语句(在一行或多行,即用户希望输入的任何方式)
我需要拆分这个txt并放入一个数组
File file ... blah blah blah
..........................
String myArray [] = text.split(";");
但是这不能正常工作,因为它考虑了所有;
。我需要忽略;
和";"
内的';'
。例如,此处;
中的'%h;i%'
不计算在内,因为它位于''
内。我怎样才能正确分割?
答案 0 :(得分:3)
假设您要拆分的每个;
位于行尾,您可以尝试在每个;
+行分隔符之后拆分
text.split(";"+System.lineSeparator())
如果您的文件有其他行分隔符,则可以使用
进行默认分隔text.split(";\n")
text.split(";\r\n")
text.split(";\r")
顺便说一句,如果你想在分割结果中加入;
(如果你不想摆脱它),你可以使用look-behind机制,如
text.split("(?<=;)"+System.lineSeparator())
如果您逐行动态阅读文件,请检查line.endsWith(";")
。
答案 1 :(得分:1)
我看到';'之后的'新行' - 它可以推广到整个文本文件? 如果您必须/想要使用正则表达式,您可以使用
形式的正则表达式进行拆分;$
$表示“行尾”,取决于Java的正则表达式实现(不记得了)。
我不会将正则表达式用于此类任务。解析文本并计算'或'的数量以便能够识别实数“;”分隔符就足够了。