преобразование массива строки в строку в Java

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

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

91 голос | спросил riyana 5 PM00000010000003531 2010, 13:56:35

15 ответов


0

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

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

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

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

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

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

ответил rsp 5 PM00000020000001731 2010, 14:13:17
0
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.

ответил f1sh 5 PM00000020000000331 2010, 14:00:03
0

Предполагая, что вам действительно нужен массив односимвольных строк (не 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);
}
ответил finnw 5 PM00000020000004431 2010, 14:14:44
0

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

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, чтобы избавиться от первой записи массива.

ответил Landei 5 PM00000020000004431 2010, 14:02:44
0
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;
}
ответил atamanroman 5 PM00000020000003431 2010, 14:20:34
0

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

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

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

[a,b,c,d,e,f]
ответил fonji 2 J0000006Europe/Moscow 2016, 18:45:02
0

Строковый массив = массив символов?

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

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

ответил thelost 5 PM00000010000003131 2010, 13:59:31
0

Преобразуйте его в тип Char?

http://www.javadb.com/convert-string-to -character-массив

ответил Aidanc 5 PM00000010000000831 2010, 13:59:08
0

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

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

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

ответил Radhesh Khanna 30 J0000006Europe/Moscow 2017, 21:31:00
0

Дополнительный метод:

Как уже упоминалось, вы можете довольно легко преобразовать исходное "имя" строки в массив символов:

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" (в виде строки).

ответил AGéoCoder 15 TueEurope/Moscow2015-12-15T01:31:22+03:00Europe/Moscow12bEurope/MoscowTue, 15 Dec 2015 01:31:22 +0300 2015, 01:31:22
0

Разделение пустой строки с помощью 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 () .

ответил ccpizza 23 MarpmWed, 23 Mar 2016 20:34:28 +03002016-03-23T20:34:28+03:0008 2016, 20:34:28
0
/**
 * <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-й, вы должны удалить его из массива. Это скучно.

ответил Frank Hou 1 FebruaryEurope/MoscowbSun, 01 Feb 2015 12:52:06 +0300000000pmSun, 01 Feb 2015 12:52:06 +030015 2015, 12:52:06
0

Вы можете использовать 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(", ");

Последний просто излишне длинный, просто для удовольствия!

ответил HyperNeutrino 29 PM000000100000001531 2015, 22:00:15
0

Основываясь на названии этого вопроса, я пришел сюда, чтобы преобразовать строку в массив подстрок, разделенных некоторым разделителем. Я добавлю этот ответ здесь для тех, у кого может возникнуть тот же вопрос.

Это создает массив слов, разбивая строку на каждый пробел:

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

ответил Suragch 17 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowSat, 17 Sep 2016 14:29:00 +0300 2016, 14:29:00
0

здесь нужно преобразовать простую строку в массив строк с помощью метода split.

String [] stringArray="My Name is ABC".split(" ");

Выход

stringArray[0]="My";
stringArray[1]="Name";
stringArray[2]="is";
stringArray[3]="ABC";
ответил Rahul Chaube 13 +03002016-10-13T12:18:09+03:00312016bEurope/MoscowThu, 13 Oct 2016 12:18:09 +0300 2016, 12:18:09

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132