-2

我有一个字符串,其中包含我想从该字符串中提取的“表名”。基本上从下面的这个字符串中,我想抓住“test_table”。字符串总是指定“表名=”,但我在遍历这个字符串并提取我需要的表名时遇到了麻烦。

我需要抓住每个字符,直到我打到逗号,但我遇到了麻烦。示例字符串如下所示:

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

提前致谢。

4

3 回答 3

0

在您的示例中,实际上看起来您要查找的键是“名称”而不是“表名称”(其中“表”是前一个“newModel”键的值。无论如何,在 Java 中有很多方法可以做到这一点. 假设你不知道字符串中键/值的顺序,我会使用 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;
}
于 2013-09-25T17:43:18.543 回答
0

你试过什么?有几种方法:

您可以使用正则表达式来匹配 key=value 模式以将其拉出。

您也可以只使用更标准的 JSON 来解析(有很多库可以做到这一点)。

您可以去掉字符{ , }并在=

于 2013-09-25T17:32:57.007 回答
0

在您想要的部分周围使用带有匹配组的正则表达式。下面的示例Table name=在目标字符串中查找子字符串,然后捕获每个字符,直到在编号为 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"
于 2013-09-25T17:37:12.310 回答