Как массив перевести в строку java
Чтобы в java перевести массив в строку, можно использовать статический метод join() класса String , который соединяет элементы массива. В итоговой строке элементы массива разделяются при помощи переданного первым параметром разделителя
String[] words = ["Hello", "World"]; // Разделитель может быть пустой строкой String.join("", words); // "HelloWorld" String.join(", ", words); // "Hello, World"
Преобразование массива в строку
В этом коротком руководстве мы рассмотрим преобразование массива строк или целых чисел в строку и обратно.
Мы можем добиться этого с помощью vanilla Java и служебных классов Java из часто используемых библиотек.
2. Преобразовать массив в строку
Иногда нам нужно преобразовать массив строк или целых чисел в строку, но, к сожалению, прямого метода для выполнения такого преобразования не существует.
Реализация метода toString() по умолчанию для массива возвращает что-то вроде Ljava.lang.String;@74a10858 , что информирует нас только о типе объекта и хэш-коде.
Однако служебный класс java.util.Arrays поддерживает работу с массивами и строками, включая метод toString() для массивов.
Arrays.toString() возвращает строку с содержимым входного массива. Новая созданная строка представляет собой список элементов массива, разделенных запятыми, заключенных в квадратные скобки («[]»):
String[] strArray = "one", "two", "three" >; String joinedString = Arrays.toString(strArray); assertEquals("[one, two, three]", joinedString);
int[] intArray = 1,2,3,4,5 >; joinedString = Arrays.toString(intArray); assertEquals("[1, 2, 3, 4, 5]", joinedString);
И хотя это здорово, что метод Arrays.toString(int[]) так хорошо решает эту задачу, давайте сравним его с другими методами, которые мы можем реализовать самостоятельно.
2.1. StringBuilder.append()
Для начала давайте посмотрим, как сделать это преобразование с помощью StringBuilder.append() :
String[] strArray = "Convert", "Array", "With", "Java" >; StringBuilder stringBuilder = new StringBuilder(); for (int i = 0; i strArray.length; i++) stringBuilder.append(strArray[i]); > String joinedString = stringBuilder.toString(); assertEquals("ConvertArrayWithJava", joinedString);
Кроме того, для преобразования массива целых чисел мы можем использовать тот же подход, но вместо этого вызывать Integer.valueOf(intArray[i]) при добавлении к нашему StringBuilder .
2.2. API потоков Java
Java 8 и выше предлагает метод String.join() , который создает новую строку, объединяя элементы и разделяя их указанным разделителем, в нашем случае это просто пустая строка:
String joinedString = String.join("", new String[] "Convert", "With", "Java", "Streams" >); assertEquals("ConvertWithJavaStreams", joinedString);
Кроме того, мы можем использовать метод Collectors.joining() из Java Streams API, который объединяет строки из Stream в том же порядке, что и его исходный массив:
String joinedString = Arrays .stream(new String[] "Convert", "With", "Java", "Streams" >) .collect(Collectors.joining()); assertEquals("ConvertWithJavaStreams", joinedString);
2.3. StringUtils.join()
И Apache Commons Lang никогда не должен оставаться в стороне от таких задач.
Класс StringUtils имеет несколько методов StringUtils.join() , которые можно использовать для преобразования массива строк в одну строку:
String joinedString = StringUtils.join(new String[] "Convert", "With", "Apache", "Commons" >); assertEquals("ConvertWithApacheCommons", joinedString);
2.4. Столяр.присоединиться()
И чтобы не отставать, Guava приспосабливает то же самое к своему классу Joiner . Класс Joiner предлагает гибкий API и предоставляет несколько вспомогательных методов для объединения данных.
Например, мы можем добавить разделитель или пропустить нулевые значения:
String joinedString = Joiner.on("") .skipNulls() .join(new String[] "Convert", "With", "Guava", null >); assertEquals("ConvertWithGuava", joinedString);
3. Преобразование строки в массив строк
Точно так же нам иногда нужно разбить строку на массив, содержащий некоторое подмножество входной строки, разделенное указанным разделителем, давайте посмотрим, как мы можем это сделать.
3.1. Строка.split()
Во-первых, давайте начнем с разделения пробела с помощью метода String.split() без разделителя:
String[] strArray = "loremipsum".split("");
Как превратить массив символов в строку
Я застрял на 3 шаге. Может кто написать как это сделать? Можно объяснением или блоком кода.
Отслеживать
5,185 3 3 золотых знака 24 24 серебряных знака 49 49 бронзовых знаков
задан 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 золотых знака 24 24 серебряных знака 49 49 бронзовых знаков
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 золотых знака 24 24 серебряных знака 49 49 бронзовых знаков
ответ дан 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 );
Как массив int записать в строку

Как массив int записать в строку.
Я создаю массив int после чего мне его нужно преобразовать в строку чтобы записать в файл.
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Не могу нигде найти — как преобразовать массив int в строку, или сразу в число
Народ помогите пожалуйста. Число long 9876543210 было переведено в int namArr = .
Как перевести число int в массив int digits[]
String fileName1=123456; int n=fileName1.length(),i=0; int digits = new int; .
Записать строку в массив
Необходимо закинуть данную строку в массив. public class Main < public static void.

Записать строку из файла в массив
У меня есть массив int array , мне нужно считать из файла строку с элементами (1 8 6 45 9 0 3 8).
56 / 61 / 26
Регистрация: 10.04.2017
Сообщений: 211
String а+= Integer.toString(maas[i] );
244 / 164 / 133
Регистрация: 30.09.2012
Сообщений: 690
Если устроит формат: [a1, a2, . . ., aN], то можете так сделать:
Arrays.toString(a);
746 / 493 / 285
Регистрация: 10.09.2015
Сообщений: 1,530
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
public static void main(String args[]) { //такой способ int[] array = {1, 2, 3, 4, 5, 6}; String str = ""; for (int value : array) { str = String.format("%s%s", str, value); } System.out.println(str); //или такой способ int[] array2 = {1, 2, 3, 4, 5, 6}; StringBuilder sb = new StringBuilder(); for (int value : array2) { sb.append(value); } System.out.println(sb.toString()); //или вот этот способ int[] array3 = {1, 2, 3, 4, 5, 6}; String str2 = ""; for (int value : array2) { str2 = str2.concat(String.valueOf(value)); } System.out.println(str2); }
41 / 74 / 15
Регистрация: 04.10.2017
Сообщений: 283
Sergey280995, это конечно не мое дело, если не захочешь отвечать, не надо. Но почему бы не записать в файл int’ы?
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь
Разделить строку на подстроки и записать в массив
Пожалуйста, подскажите, как написать цикл. Есть String nsString; , в который записано.
Как строковый массив из чисел преобразовать в двумерный массив int[][]
Ребят, помогите пожалуйста с задачей Имеется массив String a, в котором хранятся числа: .
Как записать в строку
Есть метод который считает количество букв в веденной строке и выводит сколько каких букв было в.
Или воспользуйтесь поиском по форуму: