2011-08-12 7 views
1

정규 표현식을 사용하여 URL의 특수 문자를 변환하려고합니다.Java 정규 표현식을 사용하여 URL의 모든 특수 문자를 대체하려면 어떻게해야합니까?

String formatUrl = "index.php?title=Test/enu/test/Tips_%26_Tricks/Tips_and_Tricks"; 
formatUrl = formatUrl.replaceAll("[^a-zA-Z0-9]" , "-"); 

난 할 노력하고있어 것은 같은 URL에 특수 문자를 변환하는 것입니다 _ % : 여기 내 예제 코드입니다. "-"를 제외하고 "-".

내 코드에서 정규 표현식은

index-php-title-Test-enu-test-Tips--26-Tricks-Tips-and-Tricks 

로 출력 결과 모든 변환 그러나 나는 그것이

index-php-title-Test/enu/test/Tips--26-Tricks/Tips-and-Tricks 

모든 포인터가 이해할 수있을 것이다 싶어요.

+0

귀하의 질문은 정규 표현식 ... 난 대답은 작동 이유를 이해하기 위해, 정규 표현식 자습서를 읽어 보시기 바랍니다 작동하는 방식을 이해하지 않았 음을 보여줍니다. –

답변

4
formatUrl = formatUrl.replaceAll("[^a-zA-Z0-9/]" , "-"); 
+1

정확히 무엇을 찾고 있었습니까. 고마워. – Shamik

8

당신은 당신의 / 정규식에 추가 할 수 있습니다 : 당신이 달성하려고하는지 궁금하네요

"[^a-zA-Z0-9/]" 
+0

나는 그가 uri-encode하고 싶어한다고 생각하지 않는다. –

+0

@PaulPRO .. 답장을 보내 주셔서 감사합니다 .Pls가 호 이폴로 이에 대한 저의 답을 찾았습니다. 왜 내가 자바 인코딩/디코딩을 찾고 있지 않은지 설명 할 것이다. – Shamik

2

. URL을 디코딩하지 않는 이유는 무엇입니까?

final String url = "index.php?title=Test/enu/test/Tips_%26_Tricks/Tips_and_Tricks"; 
final String decoded = java.net.URLDecoder.decode(url, "UTF-8"); 
System.out.println(decoded); // Prints index.php?title=Test/enu/test/Tips_&_Tricks/Tips_and_Tricks 
+0

답장을 보내 주셔서 감사합니다. 내 요구 사항은 제어 문자를 변환하는 대신 URL을 디코딩하는 것이 아닙니다. 이것은 S3 키로 변환되어? = 등의 문제가 발생합니다. S3에서 폴더 기반 구조로 변환하려면 "/"을 유지해야합니다. 그래도 도와 ​​줘서 고마워. – Shamik

+1

@Shamik :이 같은 정보는 2 페이지 아래의 주석이 아닌 질문에 있어야합니다. –

+1

@Tim : 꼭 그런 것은 아닙니다. 그 질문에서, 그는 그가 성취하려고 시도했던 것을 정확히 말했습니다. 왜 그가 그것을 성취하려했는지는 중요하지 않습니다. 나는 hoipolloi가 OP를 추측하려고 노력하고 있었다고 생각한다. –

관련 문제