2012-03-06 4 views
11

문자열을 둘러싼 "을 모두 제거하고 싶다고 가정합니다. 파이썬에서 나는 다음과 같이 할 것이다 :Python의 str.strip()에 해당하는 Java

그리고 여러 문자를 제거하고 싶다. " 괄호 :

>> s='"(Don\'t need quotes and parens)"' 
>>> print s 
"(Don't need quotes and parens)" 
>>> print s.strip('"()') 
Don't need quotes and parens 

자바에서 문자열을 제거하는 우아한 방법은 무엇입니까? 당신은 단지 "시작"을 교체 할 경우에도

s = s.replaceAll("\"",""),replaceAll("'","") 

을 :

+0

String 클래스에는 replace() 메서드가 있습니다. 그것은 당신의 필요에 적합해야합니다. – wuppi

+0

[여기를 참고하십시오] (http://stackoverflow.com/a/2088900/593709) 자세한 설명입니다. –

답변

9

내가 모든 " 문자열을 둘러싼 제거하려는

파이썬 코드에 가장 가까운 동등한은 다음과 같습니다

s = s.replaceAll("^\"+", "").replaceAll("\"+$", ""); 

그리고 여러 문자를 제거하려는 경우, 예 " 괄호 :

s = s.replaceAll("^[\"()]+", "").replaceAll("[\"()]+$", ""); 

당신이 Apache Commons Lang를 사용할 수있는 경우, StringUtils.strip()있다.

+0

+1 요청에 따라 여러 문자를 처리하는 경우에도 새로운 문자열이 두 개 생성됩니다. –

+1

@AdamMatan : Common Lang의'StringUtils.strip()'이 선호되는 방법입니다. – NPE

0

이 자바에서

String str = "\"te\"st\""; 
str = str.replaceAll("^[\"\\(]+|[\"\\)]+$", ""); 
1

, 당신이 그것을 좋아 할 수 "하고 처음에 ()와 문자열의 끝 대체 및 "끝"따옴표를 사용하면 다음과 같이 할 수 있습니다.

s = s.replace("^'", "").replace("'$", "").replace("^\"", "").replace("\"$", ""); 

또는 경우 단순히 넣어 :

s = s.replaceAll("^\"|\"$", "").replaceAll("^'|'$", ""); 
+0

그에 따라 내 대답이 변경되었습니다 .. !! –

+0

하나의 문자열 대신에 두 개의 새로운 문자열을 만드는 것은 시간 낭비가 아닐까요? –

+0

문자열은 "불변"이므로 s.replace ("\" "," ") '' '를 단순히 수행하는 것만으로는 충분하지 않습니다. 결과 문자열에 변수's '를 재 할당해야합니다 –

0

이 시도 :

new String newS = s.replaceAll("\"", ""); 

가없는 문자열로 큰 따옴표를 교체하십시오. 가정하자

6

Guava 라이브러리에는 편리한 유틸리티가 있습니다. 라이브러리에는 원하는 것을 수행하는 CharMatcher.trimFrom()이 포함되어 있습니다. 제거하려는 문자와 일치하는 CharMatcher 만 작성하면됩니다.

코드 :

CharMatcher matcher = CharMatcher.is('"'); 
System.out.println(matcher.trimFrom(s)); 

CharMatcher matcher2 = CharMatcher.anyOf("\"()"); 
System.out.println(matcher2.trimFrom(s)); 

는 내부적으로이 새로운 문자열을 생성하지 않고, 단지 s.subSequence()를 호출합니다. Regexps도 필요 없기 때문에, 가장 빠른 솔루션이라고 생각합니다. (분명히 가장 깨끗하고 이해하기 쉽습니다.)

관련 문제