마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

특정 문자가 나올 때 까지 앞에 있는 문자들을 없앨려고 하는데요..에러가 발생 합니다... [closed]

0 추천
String dataRecieved = "";

while (!readMessage.substring(0, 3).equals("456")) {
       
  int i = 2;

  readMessage = readMessage.replace(
  readMessage.substring(0, i), "");
       
  readMessage.trim();

 } 
 dataRecieved = readMessage;
 tx.append("PID : " + dataRecieved.substring(0, 3) + ", data : "
   + dataRecieved.substring(3, 5));

예를 들어서 123456789 이러한 string이 있다면 456 이라는 string이 나올 때 까지 replace를 이용해서 지우고 456을 초기 문자로 만들려고 합니다. 그런데 456이라는 string이 나오면 에러가 발생합니다....while 구문을 사용해서 하는데...제가 잘 못 한것인지....

질문을 종료한 이유: 해결
안왕초보 (1,390 포인트) 님이 2014년 2월 25일 질문
안왕초보님이 2014년 3월 4일 closed

2개의 답변

+2 추천
 
채택된 답변

원하시는게 문자열이 123456789 일때 456이 들어있는문자면 456789 이렇게 나와야 된다는건가요?

String str = "123456789";
String indexStr = "456";
		
if (str.indexOf(indexStr) != -1) {
        System.out.println("result :"+str.substring(str.indexOf(indexStr), str.length()));
}

 

bangbang (8,820 포인트) 님이 2014년 2월 25일 답변
안왕초보님이 2014년 2월 25일 채택됨
차에 가서 테스트 하기 전에 다 되서 테스트 하러 갔는데 갑자기 이러내요 뭐지...
if (readMessage.indexOf(indexStr) != -1) {
                            if (!readMessage.startsWith(indexStr)) {
                                readMessage = readMessage.subSequence(
                                        readMessage.indexOf(indexStr),
                                        readMessage.length()).toString();;
                            }

                            dataRecieved = readMessage;
                        }

이렇게도 해보고

if (readMessage.indexOf(indexStr) != -1) {
                                                            readMessage = readMessage.subSequence(
                                        readMessage.indexOf(indexStr),
                                        readMessage.length()).toString();;
                           

                            dataRecieved = readMessage;
                        }
if (readMessage.startsWith(indexStr)) {
dataRecieved = readMessage;

}

이렇게도 해봤는데 안되네요...
음.. 로직은 이상없으니까 문제는 조건문이겠네요 ㅎㅎ
indexStr 값이 뭐에요? 410C 인가요?
조건문 들어가기 전에 readMessage 한번 찍어보세요
공백은 확실히 제거된거죠?
네 410C 입니다 일단 찍어 봐야 겠네요
아 조건문 들어가기 전에 찍어 주는거 따로 조건문 들어갔을 때 따로 두개 출력 하고 있습니다 ㅎㅎ 조건문 들어가기 전에 꺼는 제대로 나옵니다
+1 추천

안왕초보님 고생많으시네요 ㅠ

예를 들어서 123456789 를 대입하셨다면

int i = 2

readMessage = readMessage.replace(readMessage.substring(0, i), "");

라고 하셨으니..

1회 수행 : 12/3456789 -> 3456789

2회 수행 : 34/56789 -> 56789 인데

조건은 (!readMessage.substring(0, 3).equals("456"))

앞 3글자 456 조건이 부합하는 경우가 없지 않나요?

 

글구.. 너무 readMessage 를 그대로 사용하려고 애쓰시는 것 같음 ㅎㅎ

갠적으로는 함수를 만들어서 문자열 작업을 직접 하드코딩하시는 것이 더 확실할 것 같에요

초보개발자ㅠ (33,870 포인트) 님이 2014년 2월 25일 답변
오늘 까지라 ㅜㅜ 가르쳐 주는 사람이라도 있으면 좋은데 가르쳐 줄 사람이 없어서 밤샘 노가다 했습니다 ㅜㅜ

handleMessage(){
if (!readMessage.substring(0, 4).equals("410C")) {
                            dataRecieved = SoundRacerActivity.this
                                    .whSrting(readMessage);
                        } else if (readMessage.substring(0, 4).equals("410C")) {
                            dataRecieved = readMessage;
                        }

}

public String whSrting(String str) {

        while (!str.substring(0, 4).equals("410C")) {
            if (str.substring(0, 4).equals("410C"))
                break;
            int i = 2;

            str = str.replace(str.substring(0, i), "");

            str.trim();

        }
        return str;
    }

이렇게 함수를 해보았지만 오류가 뜨네요 ㅎㅎ 2시간 자고 또 작업 하니 뭐가 먼지도 모르겠습니다 이제는 ㅎㅎ 아그리고 써야 할 데이터들은 무조건 짝수로 들어와서 필요한 데이터 부분인지 아닌지를 알기 위해서
readMessage.contains("410C") 이것을 하였구요 ㅎㅎ 그냥 임의로 글을 적다보니 그렇게 되어버렸네요 ㅎㅎ 41 0C 이렇게 딱 데이터가 들어와서 ㅎㅎ 초보개발자님 매번 감사합니다 ㅜㅜ
하다 보니
if (!readMessage.substring(0, 4).equals("410C")) {
                            dataRecieved = SoundRacerActivity.this
                                    .whSrting(readMessage);
                        } else if (readMessage.substring(0, 4).equals("410C")) {
                            dataRecieved = readMessage;
                        }
이부분이 필요 한가라고 생각이 드네요 흠...일단 함수 쪽에서 걸려서 나오는 거니..흠...
초보개발자님 됩니다!!bangbang 님 께서 알려주신 방법으로 하니 됩니다 ㅎㅎ indexOf는 문자 하나로만 되는지 알고 적용을 안해봤는데 아...이제 다 끝낼수 있겠습니다 ㅜㅜ 많은 답변 감사합니다 ㅜㅜ
왕!! 고생 많으셨어요~ 데드라인 맞추신건가?!
후딱 끝내고 쉬세요 +_+
...