2014-02-06 78 views
0

我有一個包含以下如何在引號分隔符VS了引號區分符

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文件,即任何方式用戶希望輸入)

我需要拆分此TXT並放入一個數組

File file ... blah blah blah 
.......................... 
String myArray [] = text.split(";"); 

但這不能正常工作,因爲它考慮到所有的;。我需要忽略那些在";"和​​3210之內的;。例如;在這裏不算,因爲它在''之內。我怎樣才能正確分割?

+0

也許你可以簡化自己的任務?你期望;只在行尾? –

+0

If事實並非如此:你能說一些有關引用字符串的信息嗎?例如:它們可以跨越多行嗎?字符串中是否有逃脫的引號?這些引號如何逃脫?字符串中是否有混合引號? –

+0

它們可以用戶可以像這樣插入任何合法的'SQL'語句:'select * from mytable;從table2中選擇smth作爲「xxx」,其中('x ; xx','ccc;');'全部在一行中 –

回答

3

假設你想拆就每個;是在一行的末尾,你可以嘗試後,每個; +行分隔符拆分類似

text.split(";"+System.lineSeparator()) 

如果你的文件有其他行分隔符,然後默認的你可以用

text.split(";\n") 
text.split(";\r\n") 
text.split(";\r") 

BTW嘗試,如果你想包括;在拆分結果(如果你不想擺脫它做),你可以使用look-behind機制像

text.split("(?<=;)"+System.lineSeparator()) 

如果你是動態讀取文件中的行由行只是檢查是否line.endsWith(";")

1

我在''後面看到'新行' - 它可以推廣到整個文本文件? 如果必須/需要使用正則表達式,你可以用形式

;$ 

的正則表達式$表示「行結束」,這取決於正則表達式的Java實現(不記得了)的分裂。

我不會在這種任務中使用正則表達式。解析文本並計算'或'的數量以便能夠識別實數「;」分隔符就足夠了「

相關問題