Я студент 2 курса CS, и я написал программу, которая подключается к IRC-клиенту и вынюхивает линии, ожидая, пока пользователь спросит: «О чем пишет твиттер @TWITTERHANDLE?»
Программа ищет ключевое слово "твиттинг", а затем запускает метод, который будет искать хэндл твиттера, используя всю строку ввода.
Проблема в том, что я понимаю, как искать ключевое слово, если я знаю, каким будет это ключевое слово перед компиляцией, но ключевым словом в этом случае может быть любой хэндл твиттера, поэтому я не уверен, какой метод лучше в поиске это будет.
Я попробовал следующее: inputLine.substring (i + 1, inputLine.indexOf ("")); Но он будет использовать первый пробел в inputLine в качестве второго индекса, что даст мне исключение IndexOutOfBounds.
Пример строки ввода следующий
:TWalk!46774664@gateway/web/freenode/ip.11.222.33.444 PRIVMSG #irchacks :What is @TWalkBot tweeting about right now?
И этот код, который у меня есть, на самом деле захватит хэндл твиттера.
/** This method parses the inputLine and returns the Twitter Handle */
public String getTwitterHandle(String inputLine) {
boolean firstAt = true;
char currentChar, tempChar;
for (int i = 0; i < inputLine.length(); i++) {
currentChar = inputLine.charAt(i);
if (currentChar == '@' && firstAt == false) {
for (int j = i; j < inputLine.length(); j++) {
tempChar = inputLine.charAt(j);
if (tempChar == ' ') {
return inputLine.substring(i + 1, j);
}
}
}
else if (currentChar == '@' && firstAt == true) {
firstAt = false;
}
}
return "User Not Found";
}
Хотя этот код работает, мне было интересно, есть ли более эффективный способ сделать это, и если да, что я должен смотреть на изменение?
Спасибо
Thomas