2012-02-18 4 views
2

소스 문자열이 모든 것이 될 수 있으며 사용자가 제어 할 수없는 상황이 있습니다. 사용자는 소스 문자열을 원하는 결과 문자열을 얻고 자하는 것으로 바꾸기 위해 정규 표현식과 대체 값을 제공 할 수 있습니다. 문제는 사용자가 특정 대체품이있는 정규식 그룹을 제공 할 수 있어야한다는 것입니다.
예 : sourcestring = "1"이면 사용자는이를 "on"으로 바꾸지 만 동일하게 정규 표현식을 만들 수 있습니다 그 시간에 sourcestring = "2"가되면 "off"로 바뀌고 다른 것은 "N/A"로 바뀝니다. 코드에서 난 아마 뭔가를 할 것입니다 sourcestring.replace ("([1]) | ([2])", ($ 1.equals ("1"))? "on": ($ 2.equals ("2 ")?"off ":"N/A ")); 하지만 replace의 두 번째 피연산자는 사용자가 선택한 문자열이어야하며 이러한 조건을 포함 할 수도 있습니다. 이런 종류의 작업을 수행 할 수있는 방법이 있습니까?Regex 조건부 대체 Java에서하지만 정규식이 아닌 문자열을 바꿉니다.

+0

그럼 ... 왜 표현식/대체 쌍은 여러 개 없습니까? 그런 다음 각 대체품을 실행할 수 있으며 일치하는 경우 대체됩니다. 그것이 일치하지 않으면, 아마도 다음 일치합니다. 나는 그 질문을 오해하고 있을지도 모른다. – FakeRainBrigand

+0

입력은 웹 양식에서 왔기 때문에 정규식의 경우 1 필드, 대체 값의 필드 1 개만 표시됩니다. 물론 나는 (예를 들어 분리 된) 대체 문자열에서 배열을 만들고 $ 1을 배열 등에서 첫 번째 값으로 변경하는 것을 고려해 봤지만 이상적으로 연결하지 않았다. – rde01

답변

0

맞춤 표기를 설정할 수 있습니다.

사용자에게 캡처 그룹과 그룹 별 대체 값을 제공하게하십시오. 예 :

"안녕하세요, 세계, 안녕하세요?"

(Hello\W+World\W+)\s*(how\sare)\s*(you.*) 

1 = Yo, man, 
2 = sup 
3 = yo? 

다음으로 자바 코드를 작성하십시오.

관련 문제