替换字符串中的字符

时间:2011-10-07 08:59:28

标签: java string

String username="abc";
String pwd="abc";

String query="Select username,pwd where username = ? and pwd = ?";

我想用username和pwd指定的不同值替换此字符串中的字符'?' ..是否有任何函数我们可以找到'?'两次,并用username替换它和pwd?

5 个答案:

答案 0 :(得分:4)

当然,请查看String.replaceFirst例如:

String query = "Select username,pwd where username = ? and pwd = ?"
                       .replaceFirst("\\?", username)
                       .replaceFirst("\\?", pwd)

请注意,您可能希望正确转义usernamepwd

考虑一下如果我提供类似

的内容会发生什么
 or 1=1

作为密码。

有关此问题的更多信息,请查看以下各种答案:


如果可能,请使用PreparedStatements

答案 1 :(得分:1)

答案 2 :(得分:1)

你可以这样做:

String username="abc"; 
String pwd="abc";

String query="Select username,pwd where username = ? and pwd = ?";
query = query.replaceFirst("\\?", username);
query = query.replaceFirst("\\?", pwd);

但是如果您正在为实际的db-query执行此操作,则需要使用预准备语句: 例如

String username="abc"; 
String pwd="abc";

String query="Select username,pwd where username = ? and pwd = ?";
PreparedStatement pStmt = con.prepareStatement(query);
pStmt.setParameter(1, username);
pStmt.setParameter(2, pwd);

ResultSet rs = pStmt.executeQuery();

答案 3 :(得分:0)

关于字符串替换的OT,但是如果您计划在JDBC中使用SQL,请查看为您执行此操作的PreparedStatement并阻止SQL注入。 http://download.oracle.com/javase/6/docs/api/java/sql/PreparedStatement.html

答案 4 :(得分:0)

您可以在此方案中使用string.format

query = String.format(query,username,pwd);

使用%s代替?