преобразование массива строки в строку в Java - PullRequest
100 голосов
/ 05 августа 2010

У меня есть string="name"; Я хочу преобразовать в массив строк.Как мне это сделать?Есть ли встроенная функция Java?Вручную я могу сделать это, но я ищу встроенную функцию Java.

Я хочу массив, где каждый символ строки будет строкой.как char 'n' теперь будет строкой "n", хранящейся в массиве.

Ответы [ 15 ]

178 голосов
/ 05 августа 2010

Чтобы начать с вашего назначения, String.split разбивает строки на регулярное выражение, это выражение может быть пустой строкой:

String[] ary = "abc".split("");

Возвращает массив:

(java.lang.String[]) [, a, b, c]

Избавление от пустой 1-й записи оставлено читателю в качестве упражнения: -)

Примечание: В Java 8 пустой первый элемент больше не включается.

41 голосов
/ 05 августа 2010
String strName = "name";
String[] strArray = new String[] {strName};
System.out.println(strArray[0]); //prints "name"

Вторая строка выделяет массив String длиной 1. Обратите внимание, что вам не нужно указывать длину самостоятельно, например:

String[] strArray = new String[1];

вместо этого длина определяется количеством элементов в инициализаторе. Использование

String[] strArray = new String[] {strName, "name1", "name2"};

создает массив длиной 3.

14 голосов
/ 05 августа 2010

Предполагая, что вам действительно нужен массив односимвольных строк (не char[] или Character[])

1. Используя регулярное выражение:

public static String[] singleChars(String s) {
    return s.split("(?!^)");
}

Отрицательный прогноз нулевой ширины предотвращает сопоставление с шаблоном в начале ввода, поэтому вы не получите начальную пустую строку.

2. Использование Гуава :

import java.util.List;

import org.apache.commons.lang.ArrayUtils;

import com.google.common.base.Functions;
import com.google.common.collect.Lists;
import com.google.common.primitives.Chars;

// ...

public static String[] singleChars(String s) {
    return
        Lists.transform(Chars.asList(s.toCharArray()),
                        Functions.toStringFunction())
             .toArray(ArrayUtils.EMPTY_STRING_ARRAY);
}
13 голосов
/ 05 августа 2010

Полагаю, в этом просто нет необходимости, поскольку он не станет более простым, чем

String[] array = {"name"};

Конечно, если вы настаиваете, вы можете написать:

static String[] convert(String... array) {
   return array;
}

String[] array = convert("name","age","hobby"); 

[Изменить] Если вы хотите однобуквенные строки, вы можете использовать:

String[] s = "name".split("");

К сожалению, s [0] будет пустым, но после этого последуют буквы n, a, m, e. Если это проблема, вы можете использовать, например, System.arrayCopy, чтобы избавиться от первой записи массива.

10 голосов
/ 05 августа 2010
String data = "abc";
String[] arr = explode(data);

public String[] explode(String s) {
    String[] arr = new String[s.length];
    for(int i = 0; i < s.length; i++)
    {
        arr[i] = String.valueOf(s.charAt(i));
    }
    return arr;
}
8 голосов
/ 02 июня 2016

В Java 8 есть метод, с помощью которого вы можете сделать это: toCharArray ():

String k = "abcdef";
char[] x = k.toCharArray();

Это приводит к следующему массиву:

[a,b,c,d,e,f]
4 голосов
/ 05 августа 2010

Массив строк = массив символов?

Или у вас есть строка с несколькими словами, каждое из которых должно быть элементом массива?

String[] array = yourString.split(wordSeparator);

3 голосов
/ 30 июня 2017

Просто используйте метод .tocharArray () в java

String k = "abc";
char alpha = k.tocharArray();

Это должно прекрасно работать в JAVA 8

3 голосов
/ 05 августа 2010

Преобразовать в тип Char?

http://www.javadb.com/convert-string-to-character-array

2 голосов
/ 23 марта 2016

Разделение пустой строки с помощью String.split () возвращает массив с одним элементом, содержащий пустую строку . В большинстве случаев вы, вероятно, предпочли бы получить пустой массив или ноль, если вы передали ноль, что в точности соответствует org.apache.commons.lang3.StringUtils.split (str) .

import org.apache.commons.lang3.StringUtils;

StringUtils.split(null)       => null
StringUtils.split("")         => []
StringUtils.split("abc def")  => ["abc", "def"]
StringUtils.split("abc  def") => ["abc", "def"]
StringUtils.split(" abc ")    => ["abc"]

Другой вариант - google guava Splitter.split () и Splitter.splitToList () , которые возвращают итератор и список соответственно. В отличие от версии Apache, Splitter бросит NPE на null:

import com.google.common.base.Splitter;

Splitter SPLITTER = Splitter.on(',').trimResults().omitEmptyStrings();

SPLITTER.split("a,b,   c , , ,, ")     =>  [a, b, c]
SPLITTER.split("")                     =>  []
SPLITTER.split("  ")                   =>  []
SPLITTER.split(null)                   =>  NullPointerException

Если вам нужен список, а не итератор, используйте Splitter.splitToList () .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...