2011-01-07 7 views
2

다른 값으로 여러 문자를 대체하려고합니다. 예를 들어, 내가 가지고있는 경우 : #love hate 그 다음 돌아오고 싶습니다 %23love%20hateURL 문자열을 정규 표현식으로 인코딩

그룹과 관련이 있습니까? 나는 그룹을 사용하는 것을 이해하려고 노력했다. 그러나 나는 그것을 정말로 이해하지 않았다.

답변

6

이 작업을 수행하려고 할 수 있습니다

String encodedstring = URLEncoder.encode("#love hate","UTF-8"); 

그것은 당신에게 당신이 원하는 결과를 줄 것이다. 를 REVERS하려면이 작업을 수행해야합니다

String loveHate = URLDecoder.decode(encodedstring); 
+0

어떻게 그리워 했습니까! :) – adarshr

+0

정확히 내가 필요로했던 것을 고맙습니다. =) 많은 아이들이있어서 번영하고 살 수 있습니까? – BeginnerPro

3

단일 문자를 바꾸려면 RegEx가 필요하지 않습니다. RegEx는 그러한 자산에 대한 과잉 자금입니다. 바꾸려는 각 문자에 대해 루프에서 String 클래스의 일반 바꾸기 메서드를 사용하면됩니다.

String output = input.replace("#", "%23"); 
output = output.replace(" ", "%20"); 

대체 할 문자는 몇 개입니까?

+0

답장을 보내 주셔서 감사합니다. 다음과 같은 문자를 여러 개 repalce해야 할 수도 있습니다. % 23i % 20love % 20이어야합니다. 고맙습니다. 고맙습니다. – BeginnerPro

+0

Np. 그러나 수십 개의 그러한 문장을 사용하는 것이 단일 RegEx 컴파일을 사용하는 것보다 훨씬 효율적입니다. – adarshr

1

아니요, 여러 번 교체해야합니다. 또 다른 옵션은 그룹을 사용하여 여러 문자열 중 하나의 다음 항목을 찾고 문자열이 무엇인지 검사하고지도를 사용하여 적절히 바꿉니다.

1

내가 무엇을 달성하고자하는 URL 인코딩 대신 순수 교체의 종류라고 생각합니다.

이 스레드에 대한 몇 가지 답변을 참조하십시오. 특히 투표가 7 회 더 재미있을 수도 있습니다.

HTTP URL Address Encoding in Java

2

당신이 훨씬 더 쉽게

예를 들어이 될 것 UTF-8 또는 기존 클래스를 사용하여 일부 인코딩에 URL을 인코딩하려는 경우. 매트 말했듯이

평민 - HttpClient를 프로젝트는

URIUtil.encodeWithinQuery(input,"UTF-8"); 
1

,이 문제를 해결하는 가장 좋은 방법은 URLEncoder와 함께입니다. 당신이 정규식을 사용하여 주장하는 경우, 다음 java.util.regex.Matcher.appendReplacement의 설명서에 나와있는 예제 코드를 참조하십시오

Pattern p = Pattern.compile("cat"); 
Matcher m = p.matcher("one cat two cats in the yard"); 
StringBuffer sb = new StringBuffer(); 
while (m.find()) { 
    m.appendReplacement(sb, "dog"); 
} 
m.appendTail(sb); 
System.out.println(sb.toString()); 

를 루프 내에서 일치하는 어떤 문자열보고 그 기반으로 사용자 대체를 할 m.group()를 사용할 수 있습니다. 이 기술은 $ {variables}을지도 등을 찾는 것으로 대체하는 데 사용할 수 있습니다.

관련 문제