파일명과 확장자 찾기(자르기)
> "."이 여러개 있는 경우 마지막"."을 찾아야 한다.
String fileName = "Test.text.bat";
"파일명 : " + fileName.substring(0, fileName.lastIndexOf("."));
"확장자 : " + fileName.substring(fileName.lastIndexOf(".")+1);
비어있는 문자열 isEmpty()
String str = ""; <= empty : 문자열 저장소의 주소는 존재하나 안의 값이 없다.
String str1 = null;
<= 참조형 데이터 형의 초기화 값. 객체가 heap의 주소를 참조하지 않았을 때str.isEmpty() 비교
if(str.length() == 0){} 보다 if(str.isEmpty()){} 가 더 가독성이 좋다.
null은 관계연산자로 비교
str == null => str이 객체가 생성되지 않았음을 비교 // if(str == null){}
str != null => str이 객체가 생성되었음을 비교 // if(str != null){}
문자열의 앞뒤 공백 자르기 trim()
String str = " 가 나다 ";
String str1 = str.trim(); //"가 나다"
중간 공백을 자를 수 없음. 앞뒤만 가능
문자열 치환 replace(), replaceAll(), (+ method chain)
String str = "Java Oracle";
String str1 = str.replace("찾을 문자열", "치환할 문자열");
String str1 = str.replaceAll("찾을 문자열", "치환할 문자열");
// replace와 replaceAll의 결과는 같다. //
String str1 = str.replaceAll("a", "AA"); // JAAvAA OrAAcle// method chain : method를 이어붙이는 거
String msg = "야 ** ㅆㅣ방";
String filter = msg.replaceAll("야", "*").replaceAll("방", "*").replaceAll("ㅆ", "*");method의 반환형이 참조형이라면, 반환값을 받아서 클래스가 제공하는 method를 연결하여 호출가능. 반환형의 데이터형에 주의(String이면 String으로 받는다.)
기본형 데이터형을 문자열로 저장하기(문자열로 만들기) valueOf();
int i = 12;
temp = String.valueOf(i);
System.out.println(temp);
//12double d = 2024.01;
temp = String.valueOf(d);
System.out.println(temp);
//2024.01
: 문자열안에서 특정 패턴이나 규칙을 가진 문자열을 검색할 때 사용.(패턴 매칭)
java.util.regex.Matcher, Pattern class에서 사용할 수 있고,
String에서는 replaceAll()에서 사용할 수 있다.패턴 매칭, 문자열 검증, 문자열 추출, 대체(수정, 치환)의 일을 할 수 있다.
패턴 매칭 : 문자열 안에 특정 패턴이나 규칙을 가진 문자열을 검색
문자열 검증 : 문자열 특정 규칙을 따르는지 검증
숫자 : \\d < (\\d{글자수}), $n >
\d가 숫자 패턴이지만, 자바에서는 \가 특수문자의 시작 문자이므로 \\를 사용한다.
문자열 안에 있는 모든 숫자를 "X"로 바꾸기
String msg = "Hello 자바 010-1234-5678 나이는 20살이고 우리집 번지수는 19-1번지";
String str = msg.replaceAll("\\d", "X");(\\d{글자수}) : 글자수씩 그룹을 만듬
원하는 문자열 마스킹 하기(치환하기)String msg = "010-1234-5678 나이는 20살이고 이전 전화번호는 011-123-4567이다."
String temp = msg.replaceAll("(\\d{3})-(\\d{4})-(\\d{4})", "XXX-XXXX-XXXX");
// XXX-XXXX-XXXX 나이는 20살이고 이전 전화번호는 011-123-4567이다.마스킹 된 문자열 중 일부만 보이게 하기 - $n : replaceAll()만 지원하는 기능
msg.replaceAll("(\\d{3})-(\\d{4})-(\\d{4})", "$1-XXXX-$3")
// 010-XXXX-5678 나이는 20살이고 이전 전화번호는 011-123-4567이다.msg = "전화번호는 010-1234-5678";
temp = msg.replaceAll("(\\d{3}-)\\d{1}(\\d{3}-\\d{4})", "$1x$2");
System.out.println(temp);//010-x234-5678
// ()로 그룹을 만들어야 $n 사용가능.
[] <= 문자 class / + <= 하나이상
정의되는 문자는 각각을 비교 : test => 문자열 안에 t, e, s, t하나를 각각 갖는다.(범위가 아님.) 범위 : 소문자 a-z, 대문자 A-Z, 숫자 0-9, 한글 ㄱ-힣, 특수문자(._%+-)는 범위를 설정할 수 없다.
String msg = "hello 내 이메일은 test@sist.com입니다.";
test :
대문자,소문자, 숫자, 특문:._%+-
[A-Za-z0-9._%+-]+
@
sist :
대문자,소문자, 숫자, 특문:.-
[A-Za-z0-9.-]+
. <= \\.
com :
영어로만 구성된 2글자 이상
[a-zA-Z]{2,}// 내 이메일은 xxxx@xxxx.xxx입니다.
: 참조형 데이터 형
선언 > 생성 > 값 할당 > 값 사용
int[] arr = null;
생성
배열명 = new 데이터형[방의 수]; // 한번 설정된 방의 수는 변경불가.
arr = new int[4];
값 할당 - 배열의 인덱스를 사용.
배열명[인덱스] = 값;
arr[0] = 2024;
arr[3] = 1;
방의 수
배열명.length => 4
방의 값 얻기
배열명[인덱스]
arr[0]; //2024
일괄처리(배열의 모든 값을 얻기)
for(int i = 0; i < 배열명.length; i++){
배열명[i]
}
선언과 생성을 한번에 하기
데이터형[] 배열명 = new 데이터형[방의 수];
데이터형[] 배열명 = {값,,,,}; <= new 데이터형[]가 생략되어있다.
int[] arr = {10, 20, 30, 400}