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"를 이해하지 못합니다. 도와주세요!
로 변경할 수 있도록 일반 문자처럼 그들을 치료하는 데 사용되기 때문에
\\?
또는\\!
을해야하는데 이 동일한 방법을 사용하여 숫자를 다시 문자로 변환하면 제대로 작동합니다. 그리고 그것은 같은 코드입니다. –당신은 그것이 \\되어야한다고 확신하지 않습니까? 또는 \\! 특수 문자를 이스케이프 처리하기 위해 \\가 사용 되었기 때문에? 그리고! 정규 표현식에서 그것들을 일반 문자처럼 취급하면 정규 표현식에서 특별한 의미를가집니다. // –
'.' (대신 코드에서'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). –