자바 : PHP의 join ()과 같은 배열 함수? 끈 으로

String[]접착제 끈 으로 조인하고 싶습니다 . 이것에 대한 기능이 있습니까?



답변

Java8 부터 사용할 수 있습니다 String.join().

String.join(", ", new String[]{"Hello", "World", "!"})

생성합니다 :

Hello, World, !

그렇지 않으면 Apache Commons Lang 에는 배열을 결합하여를 만드는 함수 가있는 StringUtils클래스가 있습니다 .joinString

예를 들면 다음과 같습니다.

StringUtils.join(new String[] {"Hello", "World", "!"}, ", ")

다음을 생성합니다 String.

Hello, World, !


답변

안드로이드에서 무엇을 사용 해야하는지 찾고 있다면 다음과 같습니다.

String android.text.TextUtils.join(CharSequence delimiter, Object[] tokens)

예를 들면 다음과 같습니다.

String joined = TextUtils.join(";", MyStringArray);


답변

Java 8에서는 다음을 사용할 수 있습니다

1) 스트림 API :

String[] a = new String[] {"a", "b", "c"};
String result = Arrays.stream(a).collect(Collectors.joining(", "));

2) 새로운 String.join 메소드 : https : //.com/a/21756398/466677

3) java.util.StringJoiner 클래스 : http://docs.oracle.com/javase/8/docs/api/java/util/StringJoiner.html


답변

약 10 줄의 코드로 이러한 함수를 쉽게 작성할 수 있습니다.

String combine(String[] s, String glue)
{
  int k = s.length;
  if ( k == 0 )
  {
    return null;
  }
  StringBuilder out = new StringBuilder();
  out.append( s[0] );
  for ( int x=1; x < k; ++x )
  {
    out.append(glue).append(s[x]);
  }
  return out.toString();
}


답변

substring ()을 사용하는 대신 약간의 모드 :

//join(String array,delimiter)
public static String join(String r[],String d)
{
        if (r.length == 0) return "";
        StringBuilder sb = new StringBuilder();
        int i;
        for(i=0;i<r.length-1;i++){
            sb.append(r[i]);
            sb.append(d);
        }
        sb.append(r[i]);
        return sb.toString();
}


답변

최근 많은 질문과 마찬가지로 Java 8이 구출되었습니다.


Java 8 java.lang.String은 원하는 것을 정확하게 수행 하는 새로운 정적 메소드를 추가했습니다 .

public static String join(CharSequence delimeter, CharSequence... elements);

그것을 사용 :

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

결과 :

"Hello, World, !"


답변

구글 구아바의 라이브러리에는 이런 종류의 기능이 있습니다 . API에서도 String [] 예제를 볼 수 있습니다.

API에서 이미 설명했듯이 빌더 메소드의 불변성을주의하십시오.

객체 배열을 허용하므로 귀하의 경우에 효과가 있습니다. 이전 경험에서 반복 가능한 스택에 가입하려고 시도했지만 정상적으로 작동합니다.

나에게서 샘플 :

Deque<String> nameStack = new ArrayDeque<>();
nameStack.push("a coder");
nameStack.push("i am");
System.out.println("|" + Joiner.on(' ').skipNulls().join(nameStack) + "|");

인쇄 : |i am a coder|