2013-09-25 99 views
-2

我有一個字符串,其中包含一個「表名」,我想從這個字符串中提取出來。基本上從這個字符串下面,我想只抓住「test_table」。字符串總是指定「表名=」,但是我在走這個字符串並拔出我需要的表名時遇到了麻煩。Java解析字符串後的值

我需要抓住每個字符,直到我點擊逗號,但我遇到了麻煩。字符串示例如下所示:

{newModel=Table name=test_table, nameInSource=null, uuid=tid:f1f46c57b618-b9a0d09f-00000001}model 

在此先感謝。

+1

什麼是你有你試過一些代碼? –

+1

麻煩?粘貼。 – guisantogui

+0

您可以嘗試解析到像鍵/值或隨便去使用patte迫使它如果你知道,indexOf「Table name =」並獲得下一個indexOf的值,「 – porfiriopartida

回答

0

使用正則表達式周圍你想要的部分匹配組。下面的示例查找目標字符串中的子字符串Table name=,然後捕獲每個字符,直到在編號爲1的組中找到逗號。最後,如果找到該模式,則它返回組1中的字符或「null」。

public static String parseTableName(String s) {        
    Pattern p = Pattern.compile("Table name=([^,]*)");       
    Matcher m = p.matcher(s);             
    return m.find() ? m.group(1) : null;          
}                   

// ... 
parseTableName(yourString); // => "test_table" 
0

你有什麼試過的?有幾種方法:

您可以使用正則表達式來匹配key = value模式以將其拉出。

你也可以使用更爲標準的JSON解析(大量的庫來做到這一點)。

你可以去掉人物{ , },做一個字符串分割上=

+0

我最初使用了一個indexOF,但沒有使用Maerics在下面發佈的正則表達式模式。感謝大家。 – user2816352

0

在你的樣品,它實際上看起來像你要找的關鍵是「名」而不是「表名」(其中「表」就是以前的「newModel,並向」鍵的值。在任何情況下,有假設你不知道字符串中的鍵/值的順序,我將使用StringTokenizer以逗號分隔它,然後遍歷每個鍵以查看哪個是「名稱」,然後用

String tableName; 

StringTokenizer st = new StringTokenizer(in, ","); 
while(st.hasMoreTokens()) { 
    String myString= st.nextToken(); 
    if (myString.startsWith("name") { 
     tableName=myString.substr(myString.charAt("="), myString.length()+2); 
    } 
    break; 
}