我有這種形式的字符串:字符串具有解析特殊字符
String buf = "[[[name11,name12]][[name21,name22]][[name31,name32]]]";
我怎樣才能檢索到所有的名字?
當我從數據庫中檢索數據時,我以這種形式收回數據。
尋找Java解決方案。
感謝
我有這種形式的字符串:字符串具有解析特殊字符
String buf = "[[[name11,name12]][[name21,name22]][[name31,name32]]]";
我怎樣才能檢索到所有的名字?
當我從數據庫中檢索數據時,我以這種形式收回數據。
尋找Java解決方案。
感謝
這招應該這樣做:
String csv = buf.replace("[[[","").replace("]]]","").replace("]][[",",");
String[] names = csv.split(",");
它消除了開頭和結尾的括號並用逗號取代了內部支架。現在,您可以將輸入拆分爲,
,並且只有名稱的數組。
String csv = buf.replace(「[」,「」)。replace(「]」,「」)// simpler? – 2010-09-13 16:41:10
String [] names = buf.split(「[,[\\\]] +」); //更簡單但不確定逃跑? – 2010-09-13 16:41:51
@Tom,no,'buf.replace(「[」,「」)。replace(「]」,「」)'不起作用:它將name12和name21粘合在一起名字也是如此)。 – 2010-09-15 07:08:44
可以使用Scanner類在Java中分析數據。
你是否總是有成對的名字?是否有可能[[name2,]]?
如果姓名總是成對出現,那麼Andreas_D的回答是一個簡單直接的答案。如果其中一個名稱可能丟失,那麼您需要在前面添加一對replace()調用來查找這些值並將虛擬值放入。具體來說,「[,」帶有「[dummyFirst,」和「,]」,並帶有「 ,dummyLast]」。然後,您必須根據適合您的上下文的任何規則來處理這些虛擬值。
你爲什麼需要解析這樣的字符串?它看起來像來自多維數組的某種'toString()'方法,在這種情況下,我建議使用它來代替它的字符串表示。您可能還想提及您正在使用的編程語言。 – 2010-09-13 13:35:45
我看到你補充說它來自數據庫。那麼,我不會建議一個* hacky *'String.split(...)'方法(我相信有人會在幾分鐘內...),但我建議將這些信息正確地存儲在數據庫中,而不是黑客繞過它。假設有人提出了一個'split(...)'解決方案,當你的一個名字包含一個'['''''''''''文字時,你會怎麼想呢? – 2010-09-13 13:45:24
該名稱不包含任何特殊字符,它只是一個字母或數字。所以即使有人使用String.split(「\\\ [」)或其他東西)也沒關係。 – jimmy 2010-09-13 13:48:25