문자열의 줄 수를 구하는 코드
프로그래밍 2007/09/04 03:18 제가 필요해서 만들어 본 짧막한 자바코드 입니다.
지금 만들고 있는 게시판에 필요해서 짜 본 코드이거든요. 이 짧막한 코드가 하는 일은 아주 간단합니다. 파라메터로 문자열을 넣어주면 그 문자열이 몇 줄 짜리인지를 알아내서 int형으로 리턴해줍니다.
필요한 곳에서 Utility.getLineNum(str); 요론 식으로 사용하기 위해서 정적 메소드로 선언해 두었습니다. 객체를 생성해서 사용 할 필요까지는 없어서요. 필요한 것은 저 메소드 하나이기 때문에...
코드는 매우 간단합니다.
if문 안에서 point++을 하기 싫다면 다음 라인에 point를 증가시키는 코드를 추가 해 줘야 합니다.
증가시켜 주지 않는다면 point는 계속 한 곳의 인덱스만을 가르키며 while문이 무한루프하게 됩니다. 또한 if문 안에서 ++point로 바꾸게 되면 endcheck와 같은 값이 나오지 않게되어 while문이 무한루프에 빠지게 됩니다.
간단한 코드 이지만 이걸 만들면서 잠시동안 재미 있었어요^^S
지금 만들고 있는 게시판에 필요해서 짜 본 코드이거든요. 이 짧막한 코드가 하는 일은 아주 간단합니다. 파라메터로 문자열을 넣어주면 그 문자열이 몇 줄 짜리인지를 알아내서 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;
}
}
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()가 먼저 떠올라서 다른 방법을 생각할 수 없게 되었었습니다...ㅠㅠ
이게 코드도 짧고 훨씬 낫네요..ㅎㅎ
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()가 먼저 떠올라서 다른 방법을 생각할 수 없게 되었었습니다...ㅠㅠ
이게 코드도 짧고 훨씬 낫네요..ㅎㅎ
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 South Korea 라이센스에 따라 이용하실 수 있습니다.
트랙백 주소 :: http://signpen.net/blog/trackback/2510819




