정규 표현식과 Pattern클래스
-문자열이 정해져 있는 형식으로 구성되어 있는지 확인할때 사용한다.
ex)이메일, 전화번호, 우편번호, 비밀번호 등
-문자 또는 숫자 기호와 반복적인 기호와 서로 결합된 문자열 형태로 이루어진다.
pattern
-정규 표현식으로 문자열을 검증하는 역할을 한다.
package kr.co.kihd.pattern;
import java.util.regex.Pattern;
public class PatternTest1 {
public static void main(String[] args) {
//010,02시작하는 휴대폰번호,서울지역 전화번호를 패턴으로 정의
String pattern = "(010|02)-\\d{3,4}-\\d{4}";
String phoneNum = "010-5544-1234";
String seoulNum = "04-776-1234";
boolean result = Pattern.matches(pattern, phoneNum);
result = Pattern.matches(pattern, seoulNum);
if(result) {
System.out.println("전화번호 양식이 맞습니다.");
}
else {
System.out.println("전화번호 양식이 맞지 않습니다. 다시 입력해주세요.");
}
}
}
package kr.co.kihd.pattern;
import java.util.Vector;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class PatternTest2 {
public static void main(String[] args) {
String[] data = {"bat", "baby", "bouns", "ca", "cb", "c.", "car", "com"
,"date", "zoo", "disc"};
//소문자 c로 시작하는 영어단어나 문자를 패턴으로 정의
Pattern pattern = Pattern.compile("c[a-z]*");
Vector<String> vString = new Vector<String>();
for(String str : data) {
Matcher matcher = pattern.matcher(str);
//정의를 한패턴과 일치하는가?
if(matcher.matches()) {
System.out.println(str);
vString.add(str);
}
}
System.out.println();
System.out.println("c로 시작하는 소문자 영단어 :" + vString.toString());
}
}
Fomat 클래스
형식 클래스
-숫자와 날짜 등을 원하는 형식으로 문자열을 변환 하는데 사용한다.
-종류
숫자형식 DecimalFormat
날짜형식 SimpleDateFormat
DecimalFormat
package kr.co.kihd.format;
import java.text.DecimalFormat;
public class DecimalFormatTest {
public static void main(String[] args) {
double number = 5577669.587;
//0은 자릿수 다 차지를 하고 표식을 하는 반면에,
//#은 자릿수 다 차지를 하고 표식이 안된다.
DecimalFormat dFormat = new DecimalFormat("0");
System.out.println(dFormat.format(number));
dFormat = new DecimalFormat("0.0");
System.out.println(dFormat.format(number));
dFormat = new DecimalFormat("000000000.000000000");
System.out.println(dFormat.format(number));
dFormat = new DecimalFormat("#");
System.out.println(dFormat.format(number));
dFormat = new DecimalFormat("#.#");
System.out.println(dFormat.format(number));
dFormat = new DecimalFormat("##########.##########");
System.out.println(dFormat.format(number));
dFormat = new DecimalFormat("#,###.00");
System.out.println(dFormat.format(number));
}
}
SimpleDateFormat
package kr.co.kihd.format;
import java.text.SimpleDateFormat;
import java.util.Date;
public class SimpleDateFormatTest {
public static void main(String[] args) {
Date date = new Date();
System.out.println(date.toString());
SimpleDateFormat sFormat = new SimpleDateFormat("yyyy-MM-dd E요일 a hh:mm:ss");
System.out.println(sFormat.format(date));
//요일
sFormat = new SimpleDateFormat("오늘은 E요일");
System.out.println(sFormat.format(date));
//년기준
sFormat = new SimpleDateFormat("오늘은 올해의 D번째 날");
System.out.println(sFormat.format(date));
//월기준
sFormat = new SimpleDateFormat("오늘은 이달의 d번째 날");
System.out.println(sFormat.format(date));
//시차
sFormat = new SimpleDateFormat("X");
System.out.println(sFormat.format(date));
sFormat = new SimpleDateFormat("z");
System.out.println(sFormat.format(date));
}
}
String Tokenizer 클래스
문자열을 분리하는 방법은 2가지가 있다.
-String클래스의 split()메서드를 이용하는 방법
-java.utill.StringTokenizer 메서드를 조합하여 분리하는 방법
-구분자 사이에 단어가 없어도 공백을 리턴하지않고 다음 단어를 리턴한다.
package kr.co.kihd.token;
import java.util.StringTokenizer;
public class SplitStringTokenizerTest {
public static void main(String[] args) {
//split()는 구분자를 공백으로 주면 즉 데이터가 공백을 다수 포함하고 있다면,
//공백도 하나의 토큰으로 인식한다.
//String data = "baby cat dog";
String data = "baby cat a b c d e f g h i j k l m n o p q cat dog";
String[] result = data.split(" ");
for(String str : result) {
System.out.println(str);
}
System.out.println("토큰 개수 : " + result.length);
System.out.println("---------------------------------------");
StringTokenizer sTokenizer = new StringTokenizer(data, " ");
while(sTokenizer.hasMoreTokens()) {
System.out.println("남은 토큰수 : " + sTokenizer.countTokens());
String str = sTokenizer.nextToken();
System.out.println(str);
}
}
}
package kr.co.kihd.token;
import java.util.StringTokenizer;
public class SplitStringTokenizerTest2 {
public static void main(String[] args) {
//split()는 구분자를 공백으로 주면 즉 데이터가 공백을 다수 포함하고 있다면,
//공백도 하나의 토큰으로 인식한다.
//String data = "baby cat dog";
String data = "baby cat a b c d e f g h i j k l m n o p q cat dog";
long start = System.nanoTime();
String[] result = data.split(" ");
for(String str : result) {
System.out.println(str);
}
long end = System.nanoTime();
System.out.println("걸린 시간 : " + (end - start) + "ns");
System.out.println("걸린 시간 : " + (end - start)/1000000000.0 + "초");
//System.out.println("토큰 개수 : " + result.length);
System.out.println("---------------------------------------");
StringTokenizer sTokenizer = new StringTokenizer(data, " ");
start = System.nanoTime();
while(sTokenizer.hasMoreTokens()) {
// System.out.println("남은 토큰수 : " + sTokenizer.countTokens());
String str = sTokenizer.nextToken();
System.out.println(str);
}
end = System.nanoTime();
System.out.println("걸린 시간 : " + (end - start) + "ns");
System.out.println("걸린 시간 : " + (end - start)/1000000000.0 + "초");
}
}
Date클래스
날짜 표현Date 클래스는 TimeStemp기능으로 많이 사용된다.
package kr.co.kihd.date;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateTest {
public static void main(String[] args) {
//Date 클래스는 TimeStemp기능으로 많이 사용된다.
//ex)근퇴, 카드 사용내역, 로그정보
Date today = new Date();
//Date클래스는 toString()호출하면 세계표준협정시(UTC)형태로 출력이됨.
//SimpleDateFormat()으로 바꿔주면됨.
System.out.println(today);
SimpleDateFormat sFormat = new SimpleDateFormat("yyyy년 MM월 dd일 a hh:mm:ss");
System.out.println(sFormat.format(today));
}
}
Calender클래스
달력을 표현한 추상 클래스
package kr.co.kihd.calendar;
import java.util.Calendar;
public class CalendarTest1 {
public static void main(String[] args) {
//기본적으로 현재 날짜와 시간으로 설정된다.(싱글톤 패턴)
Calendar today = Calendar.getInstance();
//System.out.println(today);
System.out.println("올해 년도 : " + today.get(Calendar.YEAR));
System.out.println("월(0~11) : " + (today.get(Calendar.MONTH)+1));
System.out.println("올해의 몇주째 : " + today.get(Calendar.WEEK_OF_YEAR));
System.out.println("이달의 몇주쨰 : " + today.get(Calendar.WEEK_OF_MONTH));
System.out.println("이달의 몇일 : " + today.get(Calendar.DAY_OF_MONTH));
System.out.println("올해의 몇일 : " + today.get(Calendar.DAY_OF_YEAR));
System.out.println("요일(1~7), (1:일요일) : " + today.get(Calendar.DAY_OF_WEEK));
System.out.println("시간(0~23) : " + today.get(Calendar.HOUR_OF_DAY));
System.out.println("이 달의 마지막 날 : " + today.getActualMaximum(Calendar.DATE));
}
}
package kr.co.kihd.calendar;
import java.util.Calendar;
public class CalendarTest2 {
public static void main(String[] args) {
//기본적으로 현재 날짜와 시간으로 설정된다.(싱글톤 패턴)
Calendar today = Calendar.getInstance();
int year = today.get(Calendar.YEAR);
int month = today.get(Calendar.MONTH)+1;
int day = today.get(Calendar.DAY_OF_MONTH);
int week = today.get(Calendar.DAY_OF_WEEK);
String strWeek = null;
switch(week) {
case Calendar.SUNDAY:
strWeek = "일요일";
break;
case Calendar.MONDAY:
strWeek = "월요일";
break;
case Calendar.TUESDAY:
strWeek = "화요일";
break;
case Calendar.WEDNESDAY:
strWeek = "수요일";
break;
case Calendar.THURSDAY:
strWeek = "목요일";
break;
case Calendar.FRIDAY:
strWeek = "금요일";
break;
case Calendar.SATURDAY:
strWeek = "토요일";
break;
}
System.out.print("오늘은 "+year+ "년 " +month+ "월 " +day+ "일 " +strWeek);
}
}
package kr.co.kihd.calendar;
import java.util.Calendar;
import java.util.GregorianCalendar;
public class CalendarTest3 {
public static void main(String[] args) {
Calendar today1 = Calendar.getInstance();
Calendar today2 = Calendar.getInstance();
//날짜를 설정
today1 = new GregorianCalendar(2021, Calendar.FEBRUARY, 17);
long diffSec = (today1.getTimeInMillis() - today2.getTimeInMillis())/1000;
System.out.println("20201113~20210217사이의 초 : " + diffSec);
//1일 = 24*60*60
long diffDay = diffSec/(24*60*60);
System.out.println("20201113~20210217사이의 남은 일수 : " + diffDay);
}
}
TimeZone 영역 출력
package kr.co.kihd.calendar;
import java.util.Calendar;
import java.util.TimeZone;
public class TimeZoneTest {
public static void main(String[] args) {
String[] timezone = TimeZone.getAvailableIDs();
for(String zoneId : timezone) {
System.out.println("타임존 영역 : " + zoneId);
}
TimeZone tZone = TimeZone.getTimeZone("America/New_York");
Calendar.getInstance(tZone);
Calendar today = Calendar.getInstance(tZone);
System.out.println(toString(today));
}
public static String toString(Calendar date) {
int i = date.get(Calendar.AM_PM);
String str = "";
if(i == 0)
str = "AM";
else
str = "PM";
return date.get(Calendar.YEAR) + "년 " +
(date.get(Calendar.MONTH)+1) + "월 " +
date.get(Calendar.DATE) + "일 " +
" " +str+ " " +
date.get(Calendar.HOUR_OF_DAY) + "시 " +
date.get(Calendar.MINUTE) + "분 "+
date.get(Calendar.SECOND) + "초 ";
}
}