프로그램이 하려고 했던 주된 업무를 구현한 코드
제대로 된 사용법을 지키지 않아 발생한 오류를 처리하기 위한 코드
원하는 위치의 문자를 추출하는 메서드. 추출 메서드.
String statement="안녕하세요. 홍길동입니다.";
System.out.println(statement.charAt(7); // 결과는 '홍'
// 마지막 글자를 추출하고 싶다면
System.out.println(statement.charAt(statement.length()-1));
문자열이 영소문자로만 구성되어 있는지 확인하려면 string을 character로 쪼개서 문자코드 값으로 확인해야 한다.
boolean onlyAlphabet=false;
for (int i=0;i<name.length();i++) {
if ((name.charAt(i)>=65 && name.charAt(i)<=90)||(name.charAt(i)>=97 && name.charAt(i)<=122)) {
onlyAlphabet=true;
break;
}
}
System.out.println(onlyAlphabet?"영어대소문자로 구성되어있습니다.":"영어대소문자 이외의 문자가 있습니다.");
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
// 유효성 검사. 회원 가입
// - 이름 입력 -> 최소 2자~5자 이내만
boolean result=true;
String name=reader.readLine();
if (name.length()<2 || name.length()>5) {
System.out.println("이름은 2자에서 5자 이내로 입력하세요.");
}else {
for (int i=0;i<name.length();i++) {
if (name.charAt(i)<'가' || name.charAt(i)>'힣') {
System.out.println("이름은 한글로만 입력하세요.");
result=false;
break;
} else {
result=true;
}
}
if (result) {
System.out.println("회원 가입 진행..");
}else {
System.out.println("유효하지 않은 이름 > 재입력");
}
}
공백 제거 메소드. 문자열의 좌우 끝에 있는 공백문자(스페이스, 탭, 개행)를 제거한다. 사용자는 문자열의 좌우 공백을 인식하기 힘들기 때문에 편의성을 높이기 위해서 개발자가 좌우 공백을 제거하는 경우가 많은데, 이럴 경우에 사용한다.
String txt=" 하나 둘 셋";
System.out.printf("[%s]\n", txt.trim()); // "[하나 둘 셋]"로 출력됨
어떤 문자열 내에 찾는 문자가 있는지 확인하려면 if (문자열.indexOf(찾는 문자)>-1{} 이런 식으로 해주면 된다.
String txt="안녕하세요. 홍길동입니다.";
int index=txt.indexOf('홍');
System.out.println(index); // 7 출력
String txt="안녕하세요. 홍길동입니다.";
int index=txt.indexOf("하세요");
System.out.println(index); // "하세요"에서 '하'가 시작되는 2 출력
String txt="안녕하세요. 홍길동입니다.";
int index=txt.indexOf("아무개");
System.out.println(index); // 존재하지 않기 때문에 -1 출력
메서드는 대부분은 서로 상호배타적이다. 다른 메서드가 한 일의 경과를 본인의 일과 연관짓지 않는다. 그렇기 때문에 검색어가 여러개 발견되도 무조건 첫번째 검색어의 위치를 반환한다.
첫번째 외의 검색어의 위치를 반환하고 싶으면 아래와 같이 코드를 작성하면 된다.
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String txt="안녕하세요. 홍길동님. 반갑습니다. 홍길동님. 잘가세요. 길동님.";
int index=txt.indexOf("홍길동");
System.out.println(index); // 7 출력
index=txt.indexOf("홍길동", index+"홍길동".length()); // 위에서 찾은 index에 "홍길동" 길이를 더해준다.
System.out.println(index); // 20 출력
전체 string에서 문자 다 찾는 경우는 아래와 같이 코드를 작성하면 된다.
String txt="안녕하세요. 홍길동님. 반갑습니다. 홍길동님. 잘가세요. 홍길동님. 홍길동. 홍길동.";
int index=-1;
while(true) {
index=txt.indexOf("홍길동", index);
if (index==-1) {
break;
}
System.out.printf("%d번째 발견\n", index);
index+="홍길동".length();
}
사용법은 indexOf와 같다. 단, indexOf와는 반대로 찾는 방향이 우에서 좌이다.
문자열의 일부를 교체하는 메서드. 찾고자 하는 문자열을 전부 바꿔준다.
아래와 같은 식으로 메서드들이 . 으로 이루어져있는 것을 메서드체인이라고 한다.
content.replace(" ", "").indexOf(word.replace(" ", ""))
우리가 사용하고 있는 printf의 형식문자열의 단점은 콘솔에서만 적용이 가능하다는 것이다. 좀 더 다양한 플랫폼에서 형식문자열을 이용하기 위해서는 format을 이용한다.
String name="홍길동";
String result=String.format("이름 : %s님", name);
// 결과는 "이름 : 홍길동님"으로 출력된다. result 자체가 "이름 : 홍길동님"인 것.