Explode and Implode (PHP)에 해당하는 Java [닫기]


93

저는 PHP에 대한 좋은 경험이 있었지만 Java를 처음 접했으며 Java에서 폭발 및 내파 (PHP에서 사용 가능) 기능을 완벽하게 대체 할 방법을 찾고 있습니다.

나는 똑같이 Google을 검색했지만 결과에 만족하지 않습니다. 누구든지 내 문제에 대한 좋은 해결책을 가지고 있으면 감사하겠습니다.

예를 들면 :

String s = "x,y,z";
//Here I need a function to divide the string into an array based on a character.
array a = javaExplode(',', s);  //What is javaExplode?
System.out.println(Arrays.toString(a));

원하는 출력 :

[x, y, z]

3
좋습니다. 지금까지 어떤 해결책을 찾았습니까?
Konstantin Yovkov 2013 년

7
왜이 질문이 반대표를 받았습니까? 그리고 주제에서 ?? 다음 질문은 피하도록 제안하십시오.
Pankaj Wanjari

19
조회수를 고려할 때이 질문은 전혀 나쁘지 않다고 생각합니다. 나는 그것이 이상한 질문이라는 데 동의하지만 많은 PHP 프로그래머는 자바 용 Google이 폭발하여 이것을 정답으로 얻습니다.
gorgi93 2014

6
이제 2014 년 11 월이고 자바 문자열 폭발을 검색했는데이 질문이 여전히 최상위 결과로 나왔습니다. 나는 이것이 전혀 주제에서 벗어난 것이 아니기 때문에 '주제를 벗어난 것으로 닫힘'상태를 해제해야한다고 생각합니다.
Chen Li Yong

3
2016 년 2 월이 질문은 "자바 폭발"의 주요 결과입니다.
정의되지 않음

답변:


139

문자열에 대한 자바 독은 그 계시 String.split()당신에 관하여 찾고있는 것입니다 explode.

Java는 "join"에 해당하는 "implode"를 포함하지 않습니다. 다른 답변에서 알 수 있듯이 간단한 기능에 대한 거대한 외부 종속성을 포함하는 대신 몇 줄의 코드를 작성하는 것이 좋습니다. 이를 달성하는 방법에는 여러 가지가 있습니다. 사용 StringBuilder은 하나입니다.

String foo = "This,that,other";
String[] split = foo.split(",");
StringBuilder sb = new StringBuilder();
for (int i = 0; i < split.length; i++) {
    sb.append(split[i]);
    if (i != split.length - 1) {
        sb.append(" ");
    }
}
String joined = sb.toString();

모든 답변에 감사드립니다.
Pankaj Wanjari

1
Split은 실제로 정규 표현식 (PHP, Perl, Java 등)을 사용합니다. 다른 기호를 분할 할 경우, 다음과 같이 이스케이프 할 필요가 : 문자열 [] 분할 = foo.split ( "\\ (");
HoldOffHunger

2
Java 8 이후 실제로 String#join( documentation ). 예를 들어 : String joined = String.join(" ", split);. 이 메서드는 StringJoiner클래스를 사용합니다 .
Zabuzard

24

String.split() 당신에게 대체품을 제공 할 수 있습니다 explode()

대신 implode()사용자 지정 함수를 작성하거나 Apache CommonsStringUtils.join()함수를 사용하는 것이 좋습니다.


16

좋은 대안은 String.split 및 StringUtils.join 메서드입니다.

분해 :

String[] exploded="Hello World".split(" ");

파열 :

String imploded=StringUtils.join(new String[] {"Hello", "World"}, " ");

StringUtils는 외부 라이브러리에 있음을 명심하십시오.


1
StringUtils는 어디에서 찾을 수 있습니까? com.sun.internal 및 com.sun.deploy에서이 클래스를 찾았지만 com.sunpackages such as sun., that are outside of the Java platform, can be different across OS platforms (Solaris, Windows, Linux, Macintosh, etc.) and can change at any time without notice with SDK versions
Arnaud Denoyelle

좋아, 편집 한
후이

... 어떤 Appache 커먼즈 (내 생각) 인 StringUtils
crusy


4

PHP에 익숙하지 않지만 String.split 이 Java와 PHP에 해당 한다고 생각 explode합니다. 의 implode경우 standart 라이브러리는 이러한 기능을 제공하지 않습니다. 배열을 반복하고 StringBuilder / StringBuffer를 사용하여 문자열을 만듭니다 . 또는 훌륭한 Google Guava SplitterJoiner 또는 Apache Commons StringUtils의split/join 메소드를 사용해 볼 수 있습니다 .


1
Guava를 제외한 모든 링크는 3 년이지나 GitHub로 이동했기 때문에 유효합니다. 댓글을 새 링크로 업데이트했습니다.
Ivan Sharamet

0

String Class의 참조에서 이야기하고 있다면. 그래서 당신은 사용할 수 있습니다

하위 문자열 / 분할

분해 및 문자열 사용

연결

Implode를 위해.


1
concate과 동일하지 않습니다 implode.
Richard
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.