2013-10-05 3 views
0

: 3,2,1문자열 완전히 대체 여러 문자 완전히 대체 출력없이

이 사용하는 하나의 완전히 대체 방법을 거기다 지금

 set.toString().replaceAll("\\[\\]\\s+",""); 

같은 코드

: 완전히 대체 출력으로 [3, 2, 1]

 Set<String> set = new HashSet<String>();  
     set.add("1"); 
     set.add("2"); 
     set.add("3"); 
     System.out.println(set.toString().replaceAll("\\[", "").replaceAll("\\]", "").replaceAll("\\s+", "")); 

답변

2

Guava's Joiner 사용에 대한 방법 :

String joined = Joiner.on(",").join(set); 
System.out.println(joined); // 1,2,3 

또는 어떤 제 3 자 라이브러리를 사용할 수없는 경우, 다음 replaceAll를 수행하면 작동합니다 :

System.out.println(set.toString().replaceAll("[\\[\\]]|(?<=,)\\s+", "")); // 1,2,3 

글쎄, 당신은 항상받지 않습니다 HashSet과 같은 출력은 삽입 순서를 유지하지 않습니다. 원하는 경우 LinkedHashSet을 사용하십시오.

+0

내가 그것을 알고 자이나교 것은 원하는 단일 모든 방법을 대체 할 여러 정규식을 교체하는 방법입니다, 당신 받았습니다 감사 GOT. – sunleo

+0

@sunleo. 항상'|'을 사용하여 여러 정규 표현식을 병합 할 수 있습니다. –

+0

깊이와 자세한 정보에 감사드립니다. – sunleo

1

어때요? 이 정규식, [\\[\\]]. 당신은 또한 공백을 제거하려면

System.out.println(set.toString().replaceAll("[\\[\\]]", "")); // Output is 3,2,1 

는,이 정규식, [\\[\\]\\s]를 사용 (하지만 쉼표가 될 것입니다).

0

replaceAll("[^\\d|,]", "");은 숫자 (\\d) 또는 (|) 쉼표 (,)가 아닌 모든 것을 바꿉니다. 모자 심볼 ^은 Java 정규 표현식이 아니며 대괄호 []은 세트를 나타냅니다. 그래서 우리의 세트는 "숫자 또는 쉼표가 아닌 모든 것"입니다.

Set<String> set = new HashSet<String>(); 
set.add("1"); 
set.add("2"); 
set.add("3"); 
System.out.println(set.toString().replaceAll("[^\\d|,]", "")); 

출력 :

3,2,1