0

2つの文字列を比較する必要があります。

入力値は次のようになります

SELECT * FROM ds WHERE ds.age = '24';

比較する必要のあるテキストは

SELECT * FROM ds WHERE ds.status ='VALID' AND ds.age = '24';

「ds.status='VALID'AND」は静的な文字列なので、入力に挿入して元の文字列と比較することを考えました。

そこで、StringBuilderオブジェクトを作成して

query.insert(query.indexOf( "WHERE")、 "ds.status ='VALID' AND");

しかし、出力は

SELECT * FROM ds ds.status ='VALID' AND WHERE ds.age = '24';

また、indexOf()は入力によって変化する可能性があるため、静的な位置で入力することはできません。「WHERE」という単語の最後の文字のインデックスを見つける方法はありますか?

私が見つけた回避策は

String query = query.replace( "WHERE"、 "WHERE ds.status ='VALID' AND");

これは可能な限り最良の方法ですか?

4

3 に答える 3

2
query.insert(query.indexOf("WHERE") + "WHERE".length(), " ds.status='VALID' AND");
于 2012-06-12T07:09:01.243 に答える
1

Peter Lawrey のコメントのように、replace の方がずっとクリーンで読みやすいと思います。

query.replace(" WHERE ", " WHERE ds.status='VALID' AND ");

フェンスポストのエラーやマジック ナンバーを心配する必要がなく、意図がより明確になります。

編集

それは次のようになります。

query.toString().replace(" WHERE ", " WHERE ds.status='VALID' AND ");

(StringBuilder の置換はインデックスを取ります)

于 2012-06-12T08:14:48.353 に答える