정규 표현식과 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) + "초 ";
    	}
    	
    }
    

     

     

    • 네이버 블러그 공유하기
    • 네이버 밴드에 공유하기
    • 페이스북 공유하기
    • 카카오스토리 공유하기
    loading