완벽정리! 자바 문자열 배열을 문자열로 합치는 방법
시작하며
문자열 배열을 하나의 문자열로 변환하려는 경우 자바에서는 .toString()을 이용하여 직접 변환할 수 없습니다.
String[] company = { "Apple", "Amazon", "Google", "Microsoft"};
System.out.println(company.toString());
[Ljava.lang.String;@9225652
요상하게 출력되는 값은 객체 타입과 해시값입니다. 하나의 문자열로 만드는 6가지 방법에 대해서 알아보겠습니다.
배열을 하나의 문자열(String)로 합치는 법
방법 1. String.join()
String.join()
은 합친 문자열을 반환합니다. join()의 첫 번째 인자로 배열의 원소간 연결할 구분 문자, 두 번째 인자로 배열을 넣습니다.
String[] company = { "Apple", "Amazon", "Google", "Microsoft"};
String joinString = String.join(", ", company);
System.out.println(joinString);
Apple, Amazon, Google, Microsoft
join()의 첫 번째 인자인 구분문자를 생략할 수 있습니다. 생략하면 공백으로 배열의 원소를 연결합니다.
String joinString = String.join(" ","Apple", "Amazon", "Google", "Microsoft");
System.out.println(joinString);
Apple Amazon Google Microsoft
List 컬랙션이더라도 String.join을 같은 방법으로 사용할 수 있습니다.
List<String> company = List.of("Apple", "Amazon", "Google", "Microsoft");
String joinString = String.join("-", company);
System.out.println(joinString);
Apple-Amazon-Google-Microsoft
방법 2. Streams API
인텔리제이 IDE를 사용하신다면 String.join으로 변경을 제안해줍니다.
String[] company = {"Apple", "Amazon", "Google", "Microsoft"};
String str = Arrays.stream(company).collect(Collectors.joining(", "));
System.out.println(str);
Apple, Amazon, Google, Microsoft
stream을 이용하면 붙일 문자의 접두사, 접미사를 추가할 수 있습니다. Collectors.joining의 첫 번째 인자는 구분 문자, 두 번째 인자는 접두사, 세 번째 인자는 접미사입니다.
String[] company = {"Apple", "Amazon", "Google", "Microsoft"};
String str = Arrays.stream(company).collect(Collectors.joining(", ", "<", ">"));
System.out.println(str);
<Apple, Amazon, Google, Microsoft>
방법 3. Arrays.toString()
앞서 구분 문자를 지정할 수 있는 방법과 다르게 Arrays.toString은 모든 배열 요소를 ,
로, 문자열의 시작과 끝에 대괄호([])가 붙습니다.
String[] company = {"Apple", "Amazon", "Google", "Microsoft"};
String str = Arrays.toString(company);
System.out.println(str);
[Apple, Amazon, Google, Microsoft]
문자열 뿐만 아니라 정수형, 실수형도 문자열로 변환해줍니다.
int[] number = {1, 2, 3, 4};
System.out.println(Arrays.toString(number));
double[] prices = {3.14, 4.0, 1.1};
System.out.println(Arrays.toString(prices));
[1, 2, 3, 4]
[3.14, 4.0, 1.1]
방법 4. StringJoiner
StringJoiner는 자바 8버전 이상부터 사용할 수 있습니다. StringJoiner 생성자에 구분문자를, 연결하려는 문자를 add메서드를 이용하여 문자를 생성할 수 있습니다.
String str = new StringJoiner("-")
.add("Apple")
.add("Amazon")
.add("Google")
.add("Microsoft")
.toString();
System.out.println(str);
Apple-Amazon-Google-Microsoft
방법 5. StringBuilder.append()
전통적인 문자를 다루는 방법으로는 StringBuilder가 있습니다. 앞서 살펴본 편한 방법이 있기에 StringBuilder는 거의 사용하지 않습니다.
StringBuilder builder = new StringBuilder();
String[] company = {"Apple", "Amazon", "Google", "Microsoft"};
for (String name : company) {
builder.append(name).append("-");
}
String str = builder.toString();
System.out.println(str);
Apple-Amazon-Google-Microsoft-
append로 구분자를 추가하는 방식이기에 맨 마지막 배열 원소인 Microsoft 다음에 구분자 -가 붙어있습니다.
방법 6. Apache Commons
문자를 다루는 편리한 라이브러리로
Apache Common Lang가 있습니다. StringUtils.join를 이용하여 배열 문자열을 문자열로 변환할 수 있습니다.
String[] company = {"Apple", "Amazon", "Google", "Microsoft"};
String str = StringUtils.join(company, "-");
System.out.println(company);
Apple-Amazon-Google-Microsoft
본 글을 작성하기 위해서 다음 링크를 참고하였습니다.