Массив строк Java в строку
Сегодня мы рассмотрим, как преобразовать массив строк Java в строку. Иногда нам нужно преобразовать массив String в String для определенных требований. Например; мы хотим зарегистрировать содержимое массива или нам нужно преобразовать значения массива String в String и вызвать другие методы.
Массив строк Java в строку
В большинстве случаев мы вызываем метод toString() объекта, чтобы получить строковое представление. Давайте посмотрим, что происходит, когда мы вызываем метод toString() для массива строк в java.
package com.journaldev.util; public class JavaStringArrayToString < public static void main(String[] args) < String[] strArr = new String[] ; String str = strArr.toString(); System.out.println("Java String array to String = "+str); > >

public String toString()
Пример массива строк Java в строку
Итак, как преобразовать массив строк в строку в java. Мы можем использовать метод Arrays.toString , который вызывает метод toString() для отдельных элементов и использовать StringBuilder для создания строки.
public static String toString(Object[] a) < if (a == null) return "null"; int iMax = a.length - 1; if (iMax == -1) return "[]"; StringBuilder b = new StringBuilder(); b.append('['); for (int i = 0; ; i++) < b.append(String.valueOf(a[i])); if (i == iMax) return b.append(']').toString(); b.append(", "); >>
Мы также можем создать собственный метод для преобразования массива String в String, если у нас есть определенные требования к формату. Ниже приведена простая программа, показывающая эти методы в действии и полученные результаты.
package com.journaldev.util; import java.util.Arrays; public class JavaStringArrayToString < public static void main(String[] args) < String[] strArr = new String[] < "1", "2", "3" >; String str = Arrays.toString(strArr); System.out.println("Java String array to String = " + str); str = convertStringArrayToString(strArr, ","); System.out.println("Convert Java String array to String = " + str); > private static String convertStringArrayToString(String[] strArr, String delimiter) < StringBuilder sb = new StringBuilder(); for (String str : strArr) sb.append(str).append(delimiter); return sb.substring(0, sb.length() - 1); >>

Пример массива Java в строку
Теперь давайте расширим наш массив String до примера String для использования с любыми другими пользовательскими классами, вот реализация.
package com.journaldev.util; import java.util.Arrays; public class JavaArrayToString < public static void main(String[] args) < A[] arr = < new A("1"), new A("2"), new A("3") >; // default toString() method System.out.println(arr.toString()); // using Arrays.toString() for printing object array contents System.out.println(Arrays.toString(arr)); // converting Object Array to String System.out.println(convertObjectArrayToString(arr, ",")); > private static String convertObjectArrayToString(Object[] arr, String delimiter) < StringBuilder sb = new StringBuilder(); for (Object obj : arr) sb.append(obj.toString()).append(delimiter); return sb.substring(0, sb.length() - 1); >> class A < private String name; public A(String name) < this.name = name; >@Override public String toString() < System.out.println("A toString() method called!!"); return this.name; >>
Вывод, созданный приведенным выше примером программы java array to String:
[Lcom.journaldev.util.A;@7852e922 A toString() method called!! A toString() method called!! A toString() method called!! [1, 2, 3] A toString() method called!! A toString() method called!! A toString() method called!! 1,2,3
Итак, мы рассмотрели, как преобразовать массив Java String в String, а затем расширили его для использования с настраиваемыми объектами. Это все, что нужно для преобразования массива Java в строку.
Вы можете проверить больше основных примеров Java из нашего репозитория GitHub.
Ссылка: Java Arrays toString API Doc
Как превратить массив символов в строку
Я застрял на 3 шаге. Может кто написать как это сделать? Можно объяснением или блоком кода.
Отслеживать
5,185 3 3 золотых знака 23 23 серебряных знака 48 48 бронзовых знаков
задан 4 дек 2015 в 0:11
323 1 1 золотой знак 2 2 серебряных знака 10 10 бронзовых знаков
Все слова строки нужно писать с большой?
4 дек 2015 в 0:13
Да. В том и дело что символы я смог сделать большими, но как их объеденить в 1 строку, не знаю.
4 дек 2015 в 0:16
7 ответов 7
Сортировка: Сброс на вариант по умолчанию
Делать можно по-разному, конечно, но в Java есть методы для работы со строками. По-хорошему, нужно делать так:
- Разбить строку по пробелам на слова и записать в массив
- Пройтись по массиву, заменяя первые символы на символы верхнего регистра и складывая в одну строку.
Никаких массивов char использовать не нужно. Вам понадобятся следующие методы String и Character :
- split(String regex) — делит строку на массив по какому-то правилу
- charAt(int index) — возвращает символ по указанному индексу
- toUpperCase(char ch) — переводит в верхний регистр
- substring(int beginIndex) — возвращает подстроку, начиная с указанного индекса
Если в строке есть несколько пробелов и их нужно учитывать при сборке текста обратно, то алгоритм будет такой:
Проходимся по строке:
- Если символ на данной позиции пробел, то запоминаем это событие
- Иначе, если символом на предыдущей позиции был пробел по Java (обычный пробел, табуляция и т.д.) либо начало строки, то заменяем его на символ верхнего регистра Вам понадобятся следующие методы StringBuilder и Character :
- length() — возвращает длину строки
- charAt(int index) — возвращает символ на заданной позиции
- isWhitespace(char ch) — проверяет, является ли символ пробелом по Java
- setCharAt(int index, char ch) — заменяет символ на заданной позиции на указанный
- toUpperCase(char ch) — переводит в верхний регистр
Отслеживать
ответ дан 4 дек 2015 в 0:23
5,185 3 3 золотых знака 23 23 серебряных знака 48 48 бронзовых знаков
substring() еще, скорее всего, пригодиться.
4 дек 2015 в 0:31
Благодарю, но я буквально с минуту назад нашел другое решение с помощью toCharArray(), а перевод осуществил с помощью Character.toString(b[i]). Конечно это было в цикле.
4 дек 2015 в 0:33
@IntFloat, верное замечание. Добавляю к ответу. Спасибо.
4 дек 2015 в 0:34
не понял как заносить в код
4 дек 2015 в 0:38
@Tayker, вы можете ответить на свой вопрос. Внизу есть синяя кнопочка.
4 дек 2015 в 0:38
Эта операция называется capitalize , причем независимо от языка. Не зная Java вовсе, я загуглил Java capitalize и первая(!) ссылка дала:
WordUtils.capitalize(string)
Собственно, в одну строку без сторонних библиотек:
str = str.replaceAll("((^|\\s+)(\\w))", "$2\\u\\$3");
Честно говоря, не знаю, работает ли \u в Java, но можно так:
str = str.replaceAll("((^|\\s+)(\\w))", "$2" + "$3".toUpperCase());
Регулярка ищет либо первый буквенный символ в строке, либо букву, которая стоит за произвольным числом пробелов и приводит ее в верхний регистр, сохраняя то, что было перед ней (то самое число пробелов, либо ничего). Java у меня нет, тестил на perl, там работает.
П.С. внешние круглые скобки, вероятно, не нужны.
К сожалению, предложенный мной способ без WordUtils не сработает в Java по нескольким причинам. Задачка заинтересовала, поэтому приведу ее решение на паре других языков.
1) perl. Круче всего. Одна строчка. Даже функцию писать нет никакого смысла. perl, ИМХО, круче всех языков работает со строками:
my $s = "simple string - example, а теперь Русский текст"; $s =~ s/(\b\w)/\u$1/g; print "$s\n";
2) python. (Решение в Java будет аналогичным, в 2.х Питоне работает только с английскими буквами, увы)
def capitalize(s): for g in re.finditer(r"^|\s+\w", s): s = s.replace(g.group(0), g.group(0).upper(), 1) return s if __name__ == "__main__": s = capitalize("my text solo\t\t\t\tstring\nmmm") print s
Отслеживать
ответ дан 4 дек 2015 в 4:53
7,461 14 14 серебряных знаков 31 31 бронзовый знак
Стоит упомянуть, что в этом решении требуется сторонняя библиотека org.apache.commons:commons-lang3 , которую следует добавить в зависимости проекта.
4 дек 2015 в 5:14
@pavlofff, спасибо, стоило конечно это отметить. Я больше к тому, что стоит знать стандартное название более-менее стандартной операции, и пользоваться гуглом.
4 дек 2015 в 5:21
BufferedReader reader = new BufferedReader(new InputStreamReader(System. in )); String s = reader.readLine(); char[] b = s.toCharArray(); if (b[0] != ' ') b[0] = Character.toUpperCase(b[0]); for (int i = 0; i < b.length - 1; i++) < if (b[i] == ' ' && b[i + 1] != ' ') < b[i + 1] = Character.toUpperCase(b[i + 1]); >> String result = ""; for (int i = 0; i
Отслеживать
5,185 3 3 золотых знака 23 23 серебряных знака 48 48 бронзовых знаков
ответ дан 4 дек 2015 в 0:41
323 1 1 золотой знак 2 2 серебряных знака 10 10 бронзовых знаков
И в правду. не задумывался над этим. Все из-за (b[i+1]) или как?
4 дек 2015 в 1:02
Я чуть-чуть поправил ваш код. Надеюсь, вы не против 🙂 Ответ может кому-то помочь в дальнейшем.
4 дек 2015 в 1:53
@LEQADA ну да :() так лучше.
4 дек 2015 в 2:44
Если отвечать прямо на вопрос, то нужно воспользоваться соответствующим конструктором:
String str = new String(b);
Отслеживать
ответ дан 6 дек 2015 в 11:33
2,181 15 15 серебряных знаков 21 21 бронзовый знак
String s = b.toString();
Также преобразуется обратно
char[] b = s.toCharArray();
Отслеживать
ответ дан 4 дек 2015 в 13:59
11 1 1 бронзовый знак
b.toString() и было использовано в коде
4 дек 2015 в 14:49
Как по мне это самый легкий способ
char[] c = ; String s = new String(с);
Отслеживать
1,086 7 7 серебряных знаков 12 12 бронзовых знаков
ответ дан 31 мар 2017 в 21:06
если нужно в строке текста каждый первый символ сделать из маленьких букв в большие то предлагаю такой вариант с пояснением: (может кому пригодится)
String str1 = "hot, java"; System.out.println( "рабочая строка : " + str1 ); String[] array = str1.split( " " ); // заполняем массив типа string словами System.out.println( "после сплита первое поле массива : " + array[0] ); System.out.println( "после сплита второе поле массива : " + array[1] ); System.out.println( "количество полей массива типа string : " + array.length ); System.out.println( "проверка первого символа нулевого поля : " + array[0].charAt( 0 ) ); System.out.println( "проверка первого символа первого поля : " + array[1].charAt( 0 ) ); for (int i = 0; i < array.length; i++) < char x = array[i].charAt( 0 ); // тогда присваиваем его переменной х типа char x = Character.toUpperCase( x ); // меняем на верхний регистр символ в переменной х array[i] = array[i].replace( array[i].charAt( 0 ), x ); // заменяем символ в нулевой позиции нужного поля на значение х типа char >> System.out.println( "после цикла первое поле массива :" + array[0] ); System.out.println( "после цикла второе поле массива :" + array[1] ); System.out.println( "теперь нужно билдером вернуть из массива строки в одну строку" ); String finalstring = String.join( " ", array ); // разделяем пробелами при импорте в строку, т.к. сплит разбил по пробелам System.out.println( "конечный результат :" + finalstring );
Конвертация массива символов в строку в Java
Одной из распространенных задач при работе с типами данных в Java является преобразование массива символов в строку.
Примером может служить следующий массив символов:
char[] a = ;
Цель — получить строку, которая соответствует данному массиву символов. В данном случае это будет строка «Java is fun».
Существует несколько способов решить эту задачу.
Использование конструктора класса String
Один из простых и эффективных способов преобразования — использование конструктора класса String, который принимает в качестве аргумента массив символов.
char[] a = ; String str = new String(a);
В результате переменная str будет содержать строку «Java is fun».
Использование метода valueOf класса String
Альтернативный вариант — использование статического метода valueOf класса String. Этот метод также принимает массив символов и возвращает строку.
char[] a = ; String str = String.valueOf(a);
В этом случае результат будет таким же — переменная str будет содержать строку «Java is fun».
Оба этих метода подходят для преобразования массива символов в строку и не имеют существенных различий в производительности. Выбор между ними зависит от предпочтений разработчика.
Строка в массив байтов, массив байтов в строку в Java
Сегодня мы узнаем, как преобразовать строку в массив байтов в java. Мы также узнаем, как преобразовать массив байтов в строку в Java.
Строка в байтовый массив
Мы можем использовать метод класса String getBytes() для кодирования строки в последовательность байтов, используя кодировку платформы по умолчанию. Этот метод перегружен, и мы также можем передать Charset в качестве аргумента. Вот простая программа, показывающая, как преобразовать строку в массив байтов в java.
package com.journaldev.util; import java.util.Arrays; public class StringToByteArray < public static void main(String[] args) < String str = "PANKAJ"; byte[] byteArr = str.getBytes(); // print the byte[] elements System.out.println("String to byte array: " + Arrays.toString(byteArr)); >>

byte[] byteArr = str.getBytes("UTF-8");
Однако, если мы укажем имя набора символов, нам придется либо перехватывать исключение UnsupportedEncodingException , либо выбрасывать его. Лучшим подходом является использование класса StandardCharsets , представленного в Java 1.7, как показано ниже.
byte[] byteArr = str.getBytes(StandardCharsets.UTF_8);
Вот и все способы преобразования строки в байтовый массив в java.
Массив байтов Java в строку
Давайте рассмотрим простую программу, показывающую, как преобразовать массив байтов в строку на Java.
package com.journaldev.util; public class ByteArrayToString < public static void main(String[] args) < byte[] byteArray = < 'P', 'A', 'N', 'K', 'A', 'J' >; byte[] byteArray1 = < 80, 65, 78, 75, 65, 74 >; String str = new String(byteArray); String str1 = new String(byteArray1); System.out.println(str); System.out.println(str1); > >

String str = new String(byteArray, StandardCharsets.UTF_8);
Класс String также имеет метод для преобразования подмножества массива байтов в строку.
byte[] byteArray1 = < 80, 65, 78, 75, 65, 74 >; String str = new String(byteArray1, 0, 3, StandardCharsets.UTF_8);
Вышеприведенный код совершенно прекрасен, и значение «str» будет «PAN». Это все о преобразовании массива байтов в строку в Java.
Вы можете проверить больше примеров массивов из нашего репозитория GitHub.
Ссылка: документ API getBytes