728x90

**주말복습 게시판 - 파일업로드 하나 추가

Board(글번호, 제목, 작성자, 내용, 작성일자, 조회수, FileInfo)

FileInfo(파일번호, 파일이름, 파일사이즈) ->객체배열로 만들기

보드객체를 하나쓰면 파일이 업로드 되어야함. 글쓰기 ->보드객체 하나생성

글번호, 제목, 작성자, 내용

파일 업로드를 하시겠습니까? + FileInfo

글목록보기 - Board객체 안에 글에 대한 내용 + 파일에 대한 내용  

 

-정규표현식

정규 표현식은 주로 텍스트(문자열) 많이 처리하는 프로그래밍 언어(C, Perl, Java, JavaScript 등)에서 문자열의 검색과 치환을 위해 주로 사용

자바의 경우 JDK1.4부터 정규 표현식을 지원하기 위한 API제공

[특수문자]

'.'  : '.'가 위치한 곳에는 반드시 임의의 한글자가 위치하여야 한다

'*' : 바로 앞의 문자가 없거나 하나 이상 반복한다는 의미

'+' : '*'과 흡사하지만, '+'는 반드시 하나 이상의 문자가 반복한다는 의미

'?' : 바로 앞의 문자가 없거나, 하나임을 의미

'^' : 문장의 처음을 나타내며, '^'가 있는 단어로 문장이 시작됨을 의미

'$' : 문장의 끝을 나타내며, '$'가 있는 단어로 문장이 끝남을 의미

'[]' : 괄호 안의 문자 중 일치하는 것을 검색할 경우 사용 

'[^]' : 특수문자 안에 있는 문자를 포함하고 있지 않는 모든 문자열을 찾고자 할 경우

'{}' : 특수문자 앞의 문자가 반복되는 횟수를 의미

'()' : 안의 문자열을 하나의 문자로 취급

'|' : or연산을 수행

[문자클래스]

[기타 표현]

 

[패턴클래스]

[Matcher클래스]

ㅡMatcher matcher = pattern.patcher("문자열");

 

[String 클래스의 정규 표현식 지원 메소드]

 

 

Scanner sc = new Scanner(System.in);

                System.out.print("문자열 입력 : ");

                String str = sc.nextLine();

                

                //abc문자 포함

                if(str.matches(".*abc.*")) {

                        System.out.println("매칭");

                }else {

                        System.out.println("비매칭");

                }

문자열 입력 : abcd

매칭

 

 

//숫자만 3자리 입력

                if(str.matches("[\\d]{3}")) {

                        System.out.println("매칭");

                }else {

                        System.out.println("비매칭");

                }

        }

문자열 입력 : 444

매칭

 

 

//알파벳, 숫자만 5자리 이상

                if(str.matches("[\\w]{5,}")) {

                        System.out.println("매칭");

                }else {

                        System.out.println("비매칭");

                }

 

문자열 입력 : dfkd123

매칭

 

 

//한글 3~5자리 입력

                if(str.matches("[가-힣]{3,5}")) {

                        System.out.println("매칭");

                }else {

                        System.out.println("비매칭");

                }

 

문자열 입력 : 안녕하세요ㅎ

비매칭

 

 

//dolsam77@nate.com =>매칭

                //32dolsam77@nate.com =>비매칭

                //dolsam77nate.com =>비매칭

                //dolsam77@nate.comcom =>비매칭

                if(str.matches("^[\\D]\\w+@\\w+.\\w{2,3}$")) {

                        System.out.println("매칭");

                }else {

                        System.out.println("비매칭");

                }

문자열 입력 : dolsam77@nate.com

매칭

 

 

//이미지 파일 구별

                //abc.jpg

                //abc.gif

                //abc.PNG

                //abc.txt (x)

                //(?i) => 소대문자 구분 없이

                if(str.matches("^\\S+\\.(?i)(jpg|gif|png)$")) { //OR사이에 공백이 있으면 인식해서 안됨.

                        System.out.println("이미지파일");

                }else {

                        System.out.println("일반파일");

                }

 

                if(str.matches("[\\D+.(?i)[jpg,gif,png]")) {

                        System.out.println("이미지파일");

                }else {

                        System.out.println("일반파일");

                }

 

문자열 입력 : abc.PNG

이미지파일

 

 

String message = "SW 개발자 처우22와 근무여건 33선진국 수준으로44 개선해야 【서울=뉴시스】김형섭 기자 = 박근혜 대통령은 23일 소프트웨어(SW) 중심사회를 실현하기 위해서는 SW의 가치를 제대로 인정하는 데서 출발해야 한다고 말했다. 박 대통령은 이날 오전 판교 테크노밸리에서 열린 'SW 중심사회 실현 전략보고회'에서 우리나라가 IT 강국으로 지속 발전하기 위해서는 SW 분야의 경쟁력 확보가 시급한 과제라며 이같이 밝혔다. 박 대통령은 시장에서 SW의 가치를 제대로 인정하지 않아 SW 기업들의 수익성이 악화되고, 우수한 인재가 유입되지 않는 악순환의 고리를 끊어야 한다며 공공부문의 SW 제값주기 노력이 민간으로 확산돼 창의성과 노력이 온전히 보답 받는 환경을 조성해 나가도록 노력할 것이라고 약속했다.  이어 그동안 공공 정보화사업이 오히려 민간 SW 시장을 위축시킨다는 지적이 있었는데 민간의 기술과 산업발전을 위한 마중물 역할을 해야 할 정부가 오히려 민간시장을 위축시키는 일이 있어서는 안 될 것이라며 민간시장에 미치는 영향을 사전에 평가하는 등 공공 정보화사업 추진절차를 개선할 필요가 있다고 진단했다.  박 대통령은 또 SW 개발자의 처우와 근무여건도 선진국 수준으로 개선할 필요가 있다며 SW 개발자가 '꿈의 직업'이 돼 최고의 인재들이 유입되고 이들이 SW 산업 발전을 이끌어가고, 그래서 소프트웨어 개발자들의 처우가 더욱 개선되는 선순환 구조를 만들어 나가야 하겠다고 강조했다.  특히 자라나는 미래세대에 대한 SW 교육이 무엇보다 중요하다며 SW 중심사회의 주역이 될 미래 세대가 '컴퓨터적 사고'를 기본소양으로 갖출 수 있도록 초·중등학교에서부터 SW교육을 강화해야 한다고 말했다.";

                

             

//SW => 소프트웨어

                String result = message.replaceAll("SW", "소프트웨어");

 

 

//해당하는 숫자를 제거

                String result2 = message.replaceAll("[0-9]","");

                System.out.println(result2);

 

 

public static void main(String[] args) {

                String data[] = {

                                "bat", "bba", "bbg", "bonus",

                                "CA", "ca", "c232", "car",

                                "date", "dic", "diraaa"

                };

                

                Pattern p = Pattern.compile("c[a-z]*"); //자바는 객체화를 좋아함

                

                for(int i=0;i<data.length;i++) {

                        Matcher m = p.matcher(data[i]);

                        if(m.matches()) {

                                System.out.println(data[i]);

                        }

                }

ca

car

 

 

String source = "abc?de?fgh";

                String reg = "(\\w*)";//한 그룹을 괄호로 표현했다.

                

                Pattern p = Pattern.compile(reg);

                Matcher m = p.matcher(source);

                

                while(m.find()) {

                        System.out.println(m.group());

                        

                }

abc

de

fgh

 

 

String source = "HP:010-1111-1111,HOME:02-222-2222";

                String reg = "(0\\d{1,2}-\\d{3,4}-\\d{4})";

                

                Pattern p = Pattern.compile(reg);

                Matcher m = p.matcher(source);

                

                while(m.find()) {

                        System.out.println(m.group());

                }

010-1111-1111

02-222-2222

13장. 자료구조로 사용되는 자바 클래스들

배열

=>한번 자료구조가 생성되면 크기를 변경할 수 없다.

 

List :  자료의 순서가 있다, 중복허용 (87~88%)

Map : 데이터가 쌍으로 있음. 데이터의 순서가 없음. (10%)

Set : 데이터의 순서가 없음. 중복된 데이터 값 허용x (2~3%)

         ex)로또번호추출

 

데이터구조는 데이터를 넣으려고 만듦

  1. 자료구조를 먼저 만든다.

  2. 데이터구조를 만들어 데이터를 넣는다.

  1. 입력 수정 출력을 구현한다. 

 

<면접에서 가끔물어봄>

-ArrayList : 수정과 삭제가 불가. 데이터값이 인접해있어서 전체를 출력할 때 주로 사용됨. ->중간에 데이터값을 삽입하면 그 값이 바뀜. 원래 있던 값은 뒤로밀려나는 것이 아니라 삭제됨.

-LinkedList : 서로 연결되어 있다.  수정과 삭제에 용이, 실제 데이터값이 이동할 필요가 없다.

 

 

count++(변수) -> list.size()로 호출할 수 있음.

 

 

 

public class ListMission01 {

        

        

        public static void show(ArrayList<String> list) {

                for(int i = 0; i<list.size();i++) {

                        System.out.print(list.get(i)+", ");

                }

        }

        public static void main(String[] args) {

                ArrayList<String> list = new ArrayList<String>();

                

                

                //List자료구조를 활용하여 키보드에 입력된 데이터를 추가하고 =>자료구조 전체바로출력

                //데이터를 입력하여 삭제하자.=>삭제하고 바로출력

                while(true){

                        System.out.println("1.추가 2.삭제 3.종료");

                        Scanner sc = new Scanner(System.in);

                        System.out.print("선택 : ");

                        String menu = sc.nextLine();

                

                switch (menu) {

                case "1":

                        String a = sc.nextLine();

                        list.add(a);

                        int num = list.size();

                        show(list);

                        break;

                        

                case "2":

                        String b = sc.nextLine();

                        int idx = list.indexOf(b);

                        if(idx != -1) {

                                list.remove(b);

                        }

                        show(list);

                        

                        break;

                case "3":

                        System.out.println("프로그램 종료");

                        return;

                        }//menu

                }//while문

        }

}

 

**안에 있는 데이터를 순회해서 출력

Iterator메소드 : 모든 자료구조를 통틀어서 사용가능

 

public static void show(ArrayList<String> list) {

Iterator<String> iter = list.iterator();

        while(iter.hasNext()) {

                System.out.println(iter.next()+", ");

        }

        System.out.println();

        }

 

 

-Mission1 (Kosta.data  - ListMission02)

로또프로그램 구현(1~45) 자동게임 중복되지 않는 6자리 숫자 출력

  1-1) 배열이용

  1-2) list자료구조 이용

       

1. 배열이용

                int arr[] = new int[6];

                for(int i=0; i<6;i++) {

                        int m = (int) ((Math.random()*45)+1);

                        if(m==arr[i]) {

                                int n = (int) ((Math.random()*45)+1);

                                arr[i] = n;

                        }       arr[i] = m;

                } System.out.print(Arrays.toString(arr));

 

public static void main(String[] args) {

                //로또번호 1~45 중 중복되지 않는 6개 출력

                //배열

                Random r = new Random();

                int arr[] = new int[6];

                

                for(int i=0;i<arr.length;i++) {

                        arr[i] = r.nextInt(45)+1;

                        for(int j=0;j<i;j++) {

                                if(arr[i]==arr[j]) {

                                        i = i-1;

                                }

                        }

                }

                Arrays.sort(arr);

                

                for(int n : arr) {

                        System.out.print(n+", ");

                }

        }

 

2. list자료구조 이용

                ArrayList list = new ArrayList();

                for(int i=0;i<6;i++) {

                int n = (int) ((Math.random()*45)+1);

                        if(list.contains(list))  {

                                int o = (int) ((Math.random()*45)+1);

                                list.add(o);

                        }list.add(n);

                }

                System.out.println(list);

 

//List구현

                List<Integer> list = new ArrayList<Integer>();

                Random r = new Random();

                while(true) {

                        int n = r.nextInt(45)+1;

                        if(list.contains(n)) {

                                continue;

                        }else {

                                list.add(n); //원래 int는 new연산자 사용해야 하는데 오토박싱이 됨. new int n;이라고 써야하나봄.

                        }

                        if(list.size()==6)break;

                }

                

                for(int n:list) {

                        System.out.print(n+", ");

                }

 

 

 

-Mission2  (Kosta.api ->Test)

 정규표현식 이용

String reg = "([가-힣]+( |시|도)[가-힣]+(시|군|구))";

"((([가-힣]+(시|도))|서울|인천|대구|광주|부산|울산)\\s[가-힣]+(시|군|구))"

 

 

 

 

 

 

 

 

 

 

 

728x90

+ Recent posts