2013-09-25 41 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; 
}