0

区切り文字をトークン化する必要がある場合に、ソース コードをトークンに区切ろうとしてい\\s|+;,{}[]ます。しかし、私はどういうわけかこれで失敗します、何かアドバイスはありますか?

public void tokenize() {
         StringTokenizer st = new StringTokenizer(this.sourceCode, "\\s+|[;{}\\[\\]]", true);

        int counter = 0;

        while (st.hasMoreElements()) {
          String token= (String) st.nextElement();
          tokenizedCode.put(counter, token.trim());
          counter++;
        }
}

編集:注:デリミタは、私が期待するものを正しくトークン化しません

int a=10;トークン化したいint,a,=,10

4

2 に答える 2

1

クラスのコンストラクターはStringTokenizerパラメーターとして正規表現を使用しないため、代わりに次のようにします。

StringTokenizer st = new StringTokenizer(this.sourceCode, " ;{}[]=", true);

StringTokenizerは互換性の理由から保持されている従来のクラスですが、新しいコードでは使用しないことをお勧めします。この機能が必要な場合は、代わりに String の split メソッドまたは java.util.regex パッケージを使用することをお勧めします。元:

String[] result = this.sourceCode.split("\\s+|[;{}\\[\\]]");
for (String str : result) {
     System.out.println(str);
}
于 2013-10-28T09:58:45.610 に答える
0

コンストラクターの 3 番目のパラメーターは、区切り文字も返すようにします。

于 2013-10-28T09:43:42.513 に答える