以下方法用空格替换字符串变量中的每个括号和每个逗号。它还使用正则表达式替换只有一个空格的多个空格。
// -----------------------------------------------------
// Replace special characters by spaces.
// -----------------------------------------------------
private String ParseCommand(String Command)
{
String strCommand = Command;
// Replace parenthesis and commas by a space.
strCommand = strCommand.replace('(', ' ');
strCommand = strCommand.replace(')', ' ');
strCommand = strCommand.replace(',', ' ');
// Remove extra spaces.
strCommand = strCommand.replaceAll("\\s+"," ");
return strCommand;
}
以上方法" ParseCommand"通过方法调用" SplitAndFind"它根据空格分割字符串。此外,它在结果数组中搜索一个标记
// -----------------------------------------------------
// Find a token in command.
// -----------------------------------------------------
public void SplitAndFind(String Command, String TokenToFind)
{
String strCommand = ParseCommand(Command);
String[] strTokens = strCommand.split(" ");
for (int i = 0; i <= strTokens.length - 1; i++)
{
System.out.println(strTokens[i]);
if (strTokens[i] == TokenToFind)
{
System.out.println("TOKEN FOUND !!!");
}
}
}
最后,我从SplitAndFind
调用方法main
,寻找令牌PRIMARY
。我的问题是找不到令牌。我显示了令牌数组中的每一项,我看到了它,但是消息&#34; TOKEN FOUND !!!&#34;永远不会显示。我做错了什么?
public static void main(String[] args) throws FileNotFoundException, IOException
{
dbEngine objEngine = new dbEngine();
objEngine.SplitAndFind("CREATE TABLE animals (PRIMARY VARCHAR(20), kind VARCHAR(8), years INTEGER) PRIMARY KEY (name, kind);", "PRIMARY");
}
答案 0 :(得分:2)
字符串需要与equals函数进行比较。所以,这行代码:
if (strTokens[i] == TokenToFind)
应该是这样的:
if (strTokens[i].equals(TokenToFind))