String[]
접착제 끈 으로 조인하고 싶습니다 . 이것에 대한 기능이 있습니까?
답변
Java8 부터 사용할 수 있습니다 String.join()
.
String.join(", ", new String[]{"Hello", "World", "!"})
생성합니다 :
Hello, World, !
그렇지 않으면 Apache Commons Lang 에는 배열을 결합하여를 만드는 함수 가있는 StringUtils
클래스가 있습니다 .join
String
예를 들면 다음과 같습니다.
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|