0

我需要比较两个字符串。

输入值就像

选择 * 从 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”的最后一个字母的索引?

我发现的解决方法是

字符串查询 = 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

我认为替换更干净,更容易阅读 - 就像彼得劳里的评论:

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

不必担心栅栏错误或幻数,而且意图更清晰!

编辑

那将是:

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

(在 StringBuilder 上替换需要索引)

于 2012-06-12T08:14:48.353 回答
0

你可以做这样的事情 -

    StringBuffer str = new StringBuffer("SELECT * FROM ds WHERE ds.age='24'");
    str.insert(str.lastIndexOf("WHERE") + 6, "ds.status='VALID' AND ");
于 2012-06-12T07:43:09.097 回答