문자열의 줄 수를 구하는 코드

프로그래밍 2007/09/04 03:18
  제가 필요해서 만들어 본 짧막한 자바코드 입니다.

  지금 만들고 있는 게시판에 필요해서 짜 본 코드이거든요. 이 짧막한 코드가 하는 일은 아주 간단합니다. 파라메터로 문자열을 넣어주면 그 문자열이 몇 줄 짜리인지를 알아내서 int형으로 리턴해줍니다.


public class Utility{
    public static int getLineNum(String content){
        int linenum = 0;
        int point = 0;
        int endcheck = content.lastIndexOf ('\n');
        while(true){
            point = content.indexOf('\n', point);
            linenum++;
            if(endcheck == point++) break;
        }
        return linenum;
    }
}

  필요한 곳에서 Utility.getLineNum(str); 요론 식으로 사용하기 위해서 정적 메소드로 선언해 두었습니다. 객체를 생성해서 사용 할 필요까지는 없어서요. 필요한 것은 저 메소드 하나이기 때문에...

  코드는 매우 간단합니다.

  • endcheck변수에 문자열의 마지막 줄바꿈의 인덱스번호를 넣어둡니다.
  • 루프 속에서 point변수에 문자열의 앞 부분부터 줄바꿈의 위치를 찾아갑니다.
  • 줄바꿈을 한 개 찾을 때 마다 linenum변수에 찾은 개수를 늘려갑니다.
  • if문에선 지금 찾아낸 줄바꿈의 인덱스와 마지막 줄바꿈의 인덱스를 가지고 있는 endcheck와 비교를 합니다.
  • 지금 찾은 인덱스가 마지막 인덱스와 같다면 break;
  • 마지막으로 linenum을 리턴하게 되는데, linenum은 줄바꿈이 없을 때 1, 1번 줄 바꿈이 있을 때 2를.. 이런 방식으로 문자열의 줄 수를 리턴하게 됩니다.

  if문 안에서 point++을 하기 싫다면 다음 라인에 point를 증가시키는 코드를 추가 해 줘야 합니다.

  증가시켜 주지 않는다면 point는 계속 한 곳의 인덱스만을 가르키며 while문이 무한루프하게 됩니다. 또한 if문 안에서 ++point로 바꾸게 되면 endcheck와 같은 값이 나오지 않게되어 while문이 무한루프에 빠지게 됩니다.

  간단한 코드 이지만 이걸 만들면서 잠시동안 재미 있었어요^^S

Update 2007/9/4

public static int getLineNum(String content){
    int linenum = 0;
    for(int i = 0; i < content.length(); i++){
        if('\n' == content.charAt(i)) linenum++;
    }
    return linenum;
}


  sonegy님이 달아주신 댓글을 보고 메소드를 새로 만들었습니다. charAt()메소드를 사용하면 훨씬 간단하게 만들 수 있는데 먼 길로 돌아서 코드를 만들었네요...;;

  코드를 만들때 머릿속에 indexOf()가 먼저 떠올라서 다른 방법을 생각할 수 없게 되었었습니다...ㅠㅠ

  이게 코드도 짧고 훨씬 낫네요..ㅎㅎ

top

트랙백 주소 :: http://signpen.net/blog/trackback/2510819

캔맥주는 역시!!

공개일기 2007/05/08 23:48
만두와 맥주

  잠자기 전에 맥주 한캔!!(사진은 2일 전의 안주)
  어제는 떡갈비 안주와 맥주 한캔!!

  요즘들어 맥주 안주가 럭셔리하게 변하고 있습니다. '자취생에게 고기는 사치'라며 삶은계란으로 단백질을 섭취하던 모습은 온데간데 없고 럭셔리하게 맥주를 즐기고 있습니다.

  요즘 잠들기 전의 일과가
  1. 떡갈비 또는 만두를 굽는다.
  2. 샤워를 하러 들어간다.
  3. 샤워가 끝나면 냉장고에서 캔맥주 하나를 꺼낸다.
  4. 미리 만들어둔 안주들과 함께 맥주를 즐긴다.
이렇습니다.

  게다가 얼마전에 블로그를 통해서 자랑했던 냉장고의 캔맥주들이 모두 바닥나버려서 어제 새로 보충했습니다. 다시 냉장고에는 맥주캔이 가득합니다.

  나만 혼자 먹어야쥐~ 음훼훼~S
top

트랙백 주소 :: http://signpen.net/blog/trackback/2510766

밥은 든든하게!!

공개일기 2007/04/20 01:28
밥은 든든하게

맛있는 식사!!

엊그제 먹었던 저녁식사.
정말 푸짐했는데..
매일매일 저렇게만 먹을 수 있다면
정말 행복하겠다...ㅜㅜ

밥을 쐈던 영규형, 잘먹었어요.
이동수단, 자동차를 지원했던 선식군 고마웠어요~
식사전 컵에 물을 따라줬던 진아양 고마웠어요..S
top
     TAG , 즐거운 생활

트랙백 주소 :: http://signpen.net/blog/trackback/2510760