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

안드로이드 substring 오류질문 ㅠㅠ

0 추천

아래 코드를 보시면 생략된부분이 비동기방식으로 홈페이지값을 다운로드하여 한줄씩 String으로 저장한부분이구요

나머지 html변수에 저다운로드한값을 집어넣고 

indexof로 위치를 찾아서 위치를 찾은값을

substring로 1차적으로 잘라내서 크기를 줄이고 또다시 잘라내서 문자열을 추출하고싶은데..

계속 subString에서 짤리네요 문제가 무엇일까요.. 크기가 많아서 인줄알고 자르지않고 String 그대로 출력을

해보앗지만 출력이되엇구요  초기화를 안해서인가싶어서 초기화도 해봣지만 되지가않습니다 그리고

length=15247; regionStart=-1; regionLenght=3364 라는 예외처리값이
뜨게 됩니다 좋은 답변 부탁드립니다 ㅠㅠ.. 


 

Handler mAfterDown = new Handler(){
        public void handleMessage(Message msg){
            TextView result1 = (TextView)findViewById(R.id.TextViewFood01);
            //TextView result2 = (TextView)findViewById(R.id.TextViewFood02);
            String html = (String)msg.obj;
            try{
                int lunchpos01 = html.lastIndexOf("<menuName>");
                int lunchpos02 = html.indexOf("</div>");
                String ItemName01 = html.substring(lunchpos01,lunchpos02); 
                
                int lunchpos03 = ItemName01.lastIndexOf("<p>");
                int lunchpos04 = ItemName01.indexOf("</p>");
                String ItemName02 = ItemName01.substring(lunchpos03,lunchpos04 );
                
                mProgress.dismiss();
                result1.setText(""+ItemName02);
            
                
            }
            catch(StringIndexOutOfBoundsException e){
                Toast.makeText(getApplicationContext(), e.getMessage(), Toast.LENGTH_LONG).show();
            }
        }
        
    };

 

익명사용자 님이 2013년 7월 25일 질문

4개의 답변

0 추천
substring이 안되는 이유는 startIndex가 음수이거나

endIndex가 startIndex보다 작은 경우입니다.

parameter로 넣은 값이 인자 값이 무엇인지 확인을 해 봐야겠지요.
mg2000 (2,640 포인트) 님이 2013년 7월 26일 답변
0 추천
//서버 이름 얻기
        tmp5 = null;
        String[] server_name = null;
        tmp5 = tmp4[i].split("<td>");
        server_name = tmp5[1].split("</td>");
        //아이템 이미지 주소 얻기
        tmp5 = null;
        String[] item_img = null;
        tmp5 = tmp4[i].split("src=\"");
        item_img = tmp5[1].split("\"");
        //상품 이름 얻기
        tmp5 = null;
        String[] item_name = null;
        tmp5 = tmp4[i].split("alt=\"");
        item_name = tmp5[1].split("\"");

이 소스를 이해 하셧음 어떤 html 오던 입맛대로 처리 가능합니다 필자는 저걸 이용해서 라그나로크 실시간 거래 웹페이지의 html문자를 읽어와 필요한것만 짤라와서 어플화 시켰습니다 현재 마켓에도 등록 되어 있습니다.
익명사용자 님이 2013년 7월 26일 답변
0 추천
부분문자열의 위치를 찾는 indexOf() 류의 메서드들은 해당 부분 문자열을 못찾을 경우에 -1을 반환합니다.

오류 메시지에 시작 위치가 -1인 것으로 보아 html 문자열에 "<menuName>"이라는 부분 문자열(혹은, 오류 발생 위치에 따라 "<p>")이 없다는 얘기죠.

원본 문자열을 확인해보세요.
Elex (9,090 포인트) 님이 2013년 7월 28일 답변
0 추천
html을 파싱해서 특정한 값을 추출하려고 할때.. jsoup 라이브러리를 사용하면 좋습니다.

http://jsoup.org/

jquery의 selector 처럼 사용할 수 있어서 정말 편합니다.
익명사용자 님이 2013년 7월 28일 답변
...