-2

この文字列から抽出したい「テーブル名」を含む文字列があります。基本的に、以下の文字列から、「test_table」を取得したいと思います。文字列は常に「テーブル名 =」を指定しますが、この文字列をたどって必要なテーブル名を引き出すのに問題があります。

コンマに到達するまで各文字を取得する必要がありますが、問題が発生しています。文字列の例は次のようになります。

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

前もって感謝します。

4

3 に答える 3

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"
于 2013-09-25T17:37:12.310 に答える
0

何を試しましたか?いくつかのアプローチがあります。

正規表現を使用して key=value パターンに一致させ、そのように引き出すことができます。

解析するのにより標準的なJSONを使用することもできます(それを行うためのライブラリがたくさんあります)。

{ , }文字を取り除き、文字列分割を行うことができます=

于 2013-09-25T17:32:57.007 に答える
0

サンプルでは、​​探しているキーは実際には「テーブル名」ではなく「名前」のように見えます (「テーブル」は前の「newModel」キーの値です。いずれにせよ、Java でこれを行う方法はたくさんあります。文字列内のキー/値の順序がわからない場合は、StringTokenizer を使用してコンマで分割し、各キーを循環してどれが "name" であるかを確認してから、

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 に答える