전 세계로 전송되는 트윗이 본문 인 Java의 Twitter 유형 프로그램에서 작업 중입니다. 해시 태그의 위치와 공백 위치를 찾기 위해 indexOf를 사용하려고합니다. 그래서 접근 자에 대한 하나의 호출로 연결을 통해 모든 해시 태그를 인쇄 할 수 있습니다. 내가 프로그램을 실행하고 언제 라인에 대한 경계 오류를 얻을 :문자열을 통해 이동하는 인덱스가 문자를 식별하지 못합니다 (Java)
allHashtags+=bodyTemp.substring(position, space+1)+" ";
나는 하위 문자열을 테스트 한 문제는 "위치"변수에 관련이있는 것으로 보인다, 그러나 나는 확실하지 않다 그것을 고치는 법.
public String getAllHashtags() {
int indexFrom=0;
int position=0;
String allHashtags="";
String bodyTemp=body;
while(position>-1) {
position=bodyTemp.indexOf("#");
int space=bodyTemp.indexOf(" ");
allHashtags+=bodyTemp.substring(position, space+1)+" ";
bodyTemp=bodyTemp.substring(space+1);
}
return allHashtags;
}
예 본체 : 여기 내 코드는 "안녕하세요 #world #you을 얼마나"
allHashtags = "#world #you"
뭔가 코드에 대해 불분명 한 경우
/내 설명 , 나에게 알려 줘라. 그러면 나는 그것을 명백하게하려고 노력할 것이다. 도와 줘서 고마워! 그들의 각 하나는 "#"public static String getAllHashtags() {
String body = "Hello #world How are #you";
String tokens[] = body.split("\\s+");
String allHashtags = "";
for (String token : tokens) {
if (token.startsWith("#")) {
allHashtags += token;
}
}
return allHashtags;
}
while 루프를 사용하는 또 다른 방법으로 시작하면 모든 단어 체크 후를 타고 해시 태그의 인덱스를 검색 할 분할을 사용하여
정규식을 사용하지 않는 이유는 무엇입니까? 그리고 그것을 덮어 쓰는 것이 아니라'allHashtags'에 연결하는 것을 의미합니까? 그리고 왜'bodyTemp = bodyTemp.substring (space + 1); '을'indexOf'에 두번째 매개 변수를 제공하는 대신에 사용합니까? –
문자열에 "#"또는 ""공백이 없기 때문에 indexOf() 메서드 호출 중 하나가 -1을 반환하면 음수 위치에서 또는 그 이하의 부분 문자열을 가져 오려고 시도합니다. – JKostikiadis
@Andy Turner 허용되지 않기 때문에 rejex를 사용하지 않습니다. 예, 연결하려고합니다 (올바른 행을 복사하지 않았기 때문에 코드를 업데이트했습니다). 나는 당신의 마지막 질문이 무슨 뜻인지 확신하지 못합니다. – pyr0