2015-01-28 4 views
0

저는 Java를 처음 접했습니다. 명령 줄에 입력 된 문자열을 암호화하는 대칭 키 암호화 프로그램을 코딩하고 있습니다. 어떤 이유로,이 부분은 나에게 내가 찾던 결과 제공되지 않습니다 내가 컴파일 할 때 기본적으로코드가 예상 결과를 생성하지 않습니다.

String[] replaceNum = { 
     " 1 ", " 2 ", " 3 ", " 4 ", " 5 ", " 6 ", " 7 ", " 8 ", " 9 ", 
" 10 ", " 11 ", " 12 ", " 13 ", " 14 ", " 15 ", " 16 ", " 17 ", " 18 ", 
" 19 ", " 20 ", " 21 ", " 22 ", " 23 ", " 24 ", " 25 ", " 26 ", " 27 ", 
" 28 ", " 29 ", " 30 ", " 31 "}; 

    String[] replaceChar = { 
     " A ", " B ", " C ", " D ", " E ", " F ", " G ", " H ", " I ", 
" J ", " K ", " L ", " M ", " N ", " O ", " P ", " Q ", " R ", " S ", 
" T ", " U ", " V ", " W ", " X ", " Y ", " Z ", " . ", " //, ", 
" //! ", " //? ", " _ "}; 


    message = message.toUpperCase(); 
    message = message.replaceAll(" ", "_"); 
    message = " " + message.replaceAll(".(?=.)", "$0 ") + " "; 

    for (int x=0; x<=30; x++) { 
     message = message.replaceAll(replaceChar[x], replaceNum[x]); 
    } 

를, I는 1부터 31까지 숫자 메시지 문자열의 문자를 대체 할, 출력은 것 내가 어떤 문장 부호를 포함하면 나는 또한

message = message.replaceAll("character", "number"); 

의 31 개 라인을 사용하는 경우 그것은 괜찮 았는데 ... 일부 # 27 일부 # 27과 같은 몇 가지 # 27 수, 오류가 발생합니다. "//"에 익숙하지 않으며 "Regex"를 이해하지 못합니다. 도와주세요!

+0

로 변경할 수 있도록 일반 문자처럼 그들을 치료하는 데 사용되기 때문에 \\? 또는 \\!을해야하는데 이 동일한 방법을 사용하여 숫자를 다시 문자로 변환하면 제대로 작동합니다. 그리고 그것은 같은 코드입니다. –

+0

당신은 그것이 \\되어야한다고 확신하지 않습니까? 또는 \\! 특수 문자를 이스케이프 처리하기 위해 \\가 사용 되었기 때문에? 그리고! 정규 표현식에서 그것들을 일반 문자처럼 취급하면 정규 표현식에서 특별한 의미를가집니다. // –

+0

'.' (대신 코드에서'27'에 해당) 대신 \\를 쓰려고한다면 말이 될 것입니다. 그것은 줄 끝이 아닌 다른 문자와 일치합니다. 문제의 성격은 [http://stackoverflow.com/questions/4109925/why-does-this-java-string-replaceall-code-not-work?rq=1](http://http://eastastroverside.or.kr)에서와 동일합니다. stackoverflow.com/questions/4109925/why-does-this-java-string-replaceall-code-not-work?rq=1). –

답변

0

은이 \\ 정규식에 ?! 등의 특수 문자를 탈출하고 또한 코드에서 \\ 대신 //