2017-12-22 1 views
6

5 ~ 10 대체물을 사용하는 시나리오에서는 stringbuilder를 사용해야합니다.Java String.replace() 또는 StringBuilder.replace()

String someData = "......"; 
someData = someData.replaceAll("(?s)<tag_one>.*?</tag_one>", ""); 
someData = someData.replaceAll("(?s)<tag_two>.*?</tag_two>", ""); 
someData = someData.replaceAll("(?s)<tag_three>.*?</tag_three>", ""); 
someData = someData.replaceAll("(?s)<tag_four>.*?</tag_four>", ""); 
someData = someData.replaceAll("(?s)<tag_five>.*?</tag_five>", ""); 
someData = someData.replaceAll("<tag_five/>", ""); 
someData = someData.replaceAll("\\s+", ""); 

여기서 stringBuilder를 사용하면 차이가 날 수 있습니다.

+3

'replace'는 regex를 사용하지 않고'replaceAll'을 사용하고 대신 chaine 나 replaceAll을 사용할 수 있습니다. 예를 들어'string.replaceAll (..). replaceAll (..). replaceAll (..)' –

+2

, ReplaceFirst도 사용할 수 있습니다. –

+1

옆에, 대신 왜 하나의 정규식을 사용하고 싶지 않으십니까? 많은 일반 부품을 볼 수 있습니다. –

답변

8

StringBuilder을 사용하면 여기에 유용한 차이가 없습니다. 여기

someData = someData.replaceAll("(?s)<tag_(one|two|three|four|five)>.*?</tag_\\1>", ""); 

에서, \\1(one|two|etc) 그룹에서 체포됐다 같은 일을 일치 :

더 나은 개선이 하나의 정규식을 사용하는 것입니다.

+0

예, 멋지 네요. 추천대로 변경 stringBuilder가 필요한가요? –

+0

'StringBuilder'가 여기에 어떤 이점이 있다고 생각하는지 모르겠습니다. 당신은'StringBuilder'에 의해 지원되지 않는 regex replacement를하고 있습니다. 그냥'String'을 고수하십시오. –

+0

맞습니다. –

관련 문제