< String 클래스 >
- 본래 String 은 클래스다.
하도 자주사용되기 때문에 java 의 총애를 받아 쉬운문법을 사용할수 있도록 만들어졌다.
1. 쉬운 기본 표현
String s1 = new String( "AAA" );
(편하게 쓰렴)
=> String s1 = "AAA";
덧셈도 원래 객체는 안되는데 String 예외
Stirng s1 = " AAA" ;
String s2 = " BBB";
s1 + s2 => AAABBB
( 이게 사실은 s1.concat(s2); 이렇게 해야 되는거 )
2. String 메소드
equals / equalsIgnoreCase - 문자열 '내용' 비교
toUpperCase / toLowerCase - 대/소문자화
concat - 문자열 2개를 1개로 합침 ( 그냥 + 로 편히 쓰거라 )
length - 문자열 갯수
< split > - 문자열 분리 => String[ ] 배열로 return 받음
String . split ( "구분자" ); => 문자열 분리
String A = OXOOXOOOO;
Stirng[ ] spl = A.split( "X" );
=> spl[0] = "O";
spl[1] = "OO";
spl[2] = "OOOO";
// 구분자로 특수문자를 쓰고 싶을땐 [ ]로 감싸준다 => ( " [특수문자] " )
특수문자중에 Regular Expression에 있는것들 < . + * ? >=> 특수문자라고 표시해줘야함
(1). [ ] 묶어서 표현
(2). split( "\\?" ) 역슬래쉬 두번
- split 하면서 바로 [0] Index 번호 줘서 사용할 수 있다.
String id = "June 1111".split(" ")[0];
String pw = "June 1111".split(" ")[1];
< split 구분자 여러개 쓰기 >
split("( - | / | : | | , | [+])");
구분자 => - / : 공백 , +
< subString > - " 슬라이싱 "(Slicing)한다 => 문자열에서 일부 문자만 추출
String s = "javaprogramming";
s.subString(0, 4); => 0번 인덱스부터 4번인덱스 '전'까지 (0 1 2 3 )
인덱스 사이의 문자열 추출
=> java
s.substring(4); => 4번 인덱스부터 ~ 마지막까지
=> programming
< charAt > - " 인덱싱 "(Indexing)한다 => 해당 index 의 문자 1개만 검색
String s = "java";
s.charAt(0);
=> 'j'
<String.valueOf>
char 딱 한글자를 String 으로 집어넣으려면 String.valueOf 가 필요하다.
String initial = String.valueOf(middle.charAt(0));
-- charAt 으로 int 와 == 동일값 확인하기 > => 유니코드 활용
String A = "1234";
if (( A.charAt( 1 ) - '0') == 2 ) { count++; }
// char int문자에 -48 ( = -'0' ) 을 해주면
=> 실제 int 값이 나온다. => 이용해서 char 과 int 를 비교 가능
( char '2' = 50 ) => - 48 => 2 // int 2 == char '2'
< contains > - 문자열이 해당문자열 내용을 포함 하고 있는지 (Boolean) / equals 의 약한버전
String s = "javaprogram";
s.contains("program")
=> true
< indexOf > - 몇 번 인덱스부터 있는지 알려줘
String s = "javaprogrampower";
s.indexOf("pr");
=> 4 ( 4번 인덱스부터 있다 )
s.indexOf("br");
=> -1 ( 없다 : -1 로 표시 )
//이걸 이용하면, contains 로도 사용할 수 있다.
< String.matches( " " ) > regex 레그익스
=> java.regex.Pattern 사용한다. ( RegularExpression 정규표현식. 컴퓨터 공용표현 )
String phone = "010-2345-5678";
입력 - 010이345오678 이렇게 들어오면 X
=> Pattern (규칙) 을 정해놓는다. ( java.regex.Pattern )
=> String.matches( " " ) 메소드 사용! (Boolean) 타입 => false 면 다시적게끔 만들기
phone.matches("010-[0-9]{3,4}-[0-9]{4}" )
[0-9] 0부터 9까지 올수있다.
{0,3} 최소 a 개 부터 b개 까지 {횟수}
그외 박아놓은 숫자나 - 기호등은 고정된 format
[a-z] 소문자
[A-Z] 대문자
[A-z] 알파벳문자
[A-z0-9] 숫자든 알파펫 문자든 전체 가능 (띄어쓰기안하고 바로붙여서)
[A-z0-9가-힣]
[가-힣] 한글문자
(010 | 011) 010이나 011중 하나만 가능 (괄호이용)
\\d - 모든 숫자
\\w - 숫자와 문자 포함해서 모든 문자들 (한글 미포함)
. {3,5} 모든문자 3~5횟수 (한글 특수문자까지 포함)
{ 회수 주기 }
[+] 최소 한개이상와야한다
"010-35-[0-9]+ " => 최소 한개 이상
[*] 횟수 무제한. 0~무한대
"010-35-[0-9]* " => 안와도 되고 / 무한대로 와도되고
[?] 횟수 0회 혹은 1회
[0-9]? // (Y|N)? 이러면 안할수도있어서, (Y|N){1} 이렇게해야겠지
{3, } 최소3 회 이상
[ replaceAll에서 regex 주기 ]
- 전화번호 뒷 번호만 표시
01033337777 => *******7777
// regEX
//return phone_number.replaceAll(".(?=.{4})", "*");
// replaceAll("regEX 로 repalce할 문자열 선택", *로 replace )
// 임의의문자열 . 을 * 로 모두 replace
// (?= X )뒤에서부터 X 문자열은 제외하겠다.
// .{4} 임의의문자열 4자리
- split 에서는 pattern 사용 가능 / Tokenizer 에서는 pattern 사용 불가능
< StringTokenizer > 문자열 쪼개는 역할만 있는 클래스
token - 더이상 쪼갤 수 없는 기본 단위
StringTokenizer tk = new StringTokenizer( 쪼갤문자열, "구분자" )
- 기본 default 구분자는 " " 공백 한칸이다. (스페이스)
- 여기 구분자에 " -,: " 특수문자를 여러개 동시에 적용시킬수있다. (띄어쓰기안하고 그냥붙여서 준다. 공백도 가능)
String a = "asf-as,wqf asf:saf"
StringTokenizer tk = new StringTokenizer(a," -,:");
while (tk.hasMoreTokens()){
String s = tk.nextToken();
System.out.println(s);}
3. Char 배열을 String으로 한방에 ( String 생성자 이용 )
char c1[ ] = { 'a', 'b', 'c', 'd' }
String sc = new String ( c1 ); => "abcd"
- byte 배열도 Char배열로 인식해서 가능 (유니코드)
byte b[ ] = { 65, 66, 67 ,68 }
String sb = new String( b ); => "ABCD"
'Back to the Java' 카테고리의 다른 글
Wrapper 클래스 (0) | 2022.07.04 |
---|---|
System 클래스 / Class 클래스 (0) | 2022.07.04 |
Exception 예외처리 / try-catch / throws / throw는 생성 (0) | 2022.07.01 |
Interface 에 숨겨진 비밀 (0) | 2022.06.30 |
A a1 = new B( ); 객체 형변환 , 자동 / 명시적 (0) | 2022.06.30 |