Преобразование строки в строковый массив в java
У меня есть string="name";
Я хочу преобразовать в массив строк.
Как мне это сделать?
Есть ли встроенная функция java? Вручную я могу это сделать, но я ищу встроенную функцию java.
Мне нужен массив, в котором каждый символ строки будет строкой.
например char 'n' будет теперь содержать строку n, хранящуюся в массиве.
Ответы
Ответ 1
Чтобы начать работу с вашим назначением, String.split
разбивает строки на регулярное выражение, это выражение может быть пустой строкой:
String[] ary = "abc".split("");
Устанавливает массив:
(java.lang.String[]) [, a, b, c]
Избавление от пустой 1-й записи остается в качестве упражнения для читателя: -)
Примечание. В Java 8 пустой первый элемент больше не включен.
Ответ 2
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.
Ответ 3
Я предполагаю, что это просто не нужно, поскольку он не будет более простым, чем
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, чтобы избавиться от первой записи массива.
Ответ 4
Предполагая, что вам действительно нужен массив односимвольных строк (не char[]
или Character[]
)
1. Использование регулярного выражения:
public static String[] singleChars(String s) {
return s.split("(?!^)");
}
Отрицательная обратная сторона с нулевой шириной предотвращает совпадение шаблонов в начале ввода, поэтому вы не получите ведущую пустую строку.
2. Используя Guava:
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);
}
Ответ 5
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;
}
Ответ 6
В java 8 существует метод, с помощью которого вы можете сделать это: toCharArray():
String k = "abcdef";
char[] x = k.toCharArray();
Это приводит к следующему массиву:
[a,b,c,d,e,f]
Ответ 7
Строковый массив = массив символов?
Или у вас есть строка с несколькими словами, каждая из которых должна быть элементом массива?
String[] array = yourString.split(wordSeparator);
Ответ 8
Преобразуйте его в тип Char
?
http://www.javadb.com/convert-string-to-character-array
Ответ 9
Просто используйте метод .tocharArray() в java
String k = "abc";
char alpha = k.tocharArray();
Это должно отлично работать в JAVA 8
Ответ 10
Дополнительный метод:
Как уже упоминалось, вы можете легко преобразовать исходное имя строки в массив char:
String originalString = "name";
char[] charArray = originalString.toCharArray();
Чтобы продолжить эту мысль, вы можете преобразовать массив char в массив String:
String[] stringArray = new String[charArray.length];
for (int i = 0; i < charArray.length; i++){
stringArray[i] = String.valueOf(charArray[i]);
}
В этот момент ваш stringArray будет заполнен исходными значениями из вашей исходной строки "name".
Например, теперь вызывая
System.out.println(stringArray[0]);
В этом случае вернет значение "n" (как String).
Ответ 11
Разделение пустой строки с помощью String.split() возвращает массив с одним элементом, содержащий пустую строку. В большинстве случаев вы, вероятно, предпочтете получить пустой массив или null, если вы передали нуль, что именно то, что вы получаете с помощью org.apache.commons.lang3.StringUtils.split(ул).
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().
Ответ 12
/**
* <pre>
* MyUtils.splitString2SingleAlphaArray(null, "") = null
* MyUtils.splitString2SingleAlphaArray("momdad", "") = [m,o,m,d,a,d]
* </pre>
* @param str the String to parse, may be null
* @return an array of parsed Strings, {@code null} if null String input
*/
public static String[] splitString2SingleAlphaArray(String s){
if (s == null )
return null;
char[] c = s.toCharArray();
String[] sArray = new String[c.length];
for (int i = 0; i < c.length; i++) {
sArray[i] = String.valueOf(c[i]);
}
return sArray;
}
Метод String.split
будет генерировать пустой 1-й, вы должны удалить его из массива. Это скучно.
Ответ 13
Вы можете использовать string.chars().mapToObj(e -> new String(new char[] {e}));
, хотя это довольно длинный и работает только с java 8. Вот еще несколько методов:
string.split(""); (Has an extra whitespace character at the beginning of the array if used before Java 8)
string.split("|");
string.split("(?!^)");
Arrays.toString(string.toCharArray()).substring(1, string.length() * 3 + 1).split(", ");
Последний просто излишне длинный, он просто для удовольствия!
Ответ 14
Основываясь на названии этого вопроса, я пришел сюда, желая преобразовать String в массив подстрок, деленный на некоторый разделитель. Я добавлю этот ответ для других, у кого может быть один и тот же вопрос.
Это делает массив слов, разбивая строку в каждом пространстве:
String str = "string to string array conversion in java";
String delimiter = " ";
String strArray[] = str.split(delimiter);
Это создает следующий массив:
// [string, to, string, array, conversion, in, java]
Источник
Протестировано на Java 8
Ответ 15
здесь есть преобразование простой строки в строковый массив с использованием метода split.
String [] stringArray="My Name is ABC".split(" ");
Выход
stringArray[0]="My";
stringArray[1]="Name";
stringArray[2]="is";
stringArray[3]="ABC";