Как преобразовать строку в массив js?
Помимо вышеупомянутых способов преобразования строки в массив, есть ещё один метод, которым можно воспользоваться.
Это Array.from():
Данный метод работает очень просто. Вся его работа описана в примере ниже:
const stringOfNumbers = '1234'; const numbers = Array.from(stringOfNumbers); console.log(numbers); // => ['1', '2', '3', '4'] - элементы массива - строки
У данного метода есть особенность, которая может показаться недостатком.
Если в строке между словами, буквами или цифрами будут знаки препинания либо пробелы, они также станут элементами массива.
const stringOfNumbers = '1 2.3,4'; const numbers = Array.from(stringOfNumbers); console.log(numbers); // => ['1', ' ', '2', '.', '3', ',', '4']
27 октября 2021
Для того, чтобы преобразовать строку в массив, нужно сначала определить, по какому критерию строка будет разбиваться на элементы. Например, строку можно разбить на подстроки, между которыми встречается разделитель:
const str = 'мама мыла раму'; // исходная строка const result = str.split(' '); // используем метод split с указанием разделителя // ['мама', 'мыла', 'раму']
В примере выше использовался метод split для разделения строк на элементы по определенному разделителю. Если указать в качестве разделителя пустую строку, то на выходе получим массив из символов:
// вызываем метод на строке и выводим результат console.log('test'.split('')); // => ['t', 'e', 's', 't']
Также строки имеют некоторые свойства массивов: их можно перебирать в циклах а также можно обращаться к символам через индексы:
// перебираем строку в цикле for (const symbol of 'test') console.log(symbol); > // обращение по индексу console.log('test'[1]); // => 'e'
Есть также быстрый способ разбить строку на символы с использованием рест-оператора:
const result = [. 'hello']; // ['h', 'e', 'l', 'l', 'o']; result.forEach((item) => console.log(item));
Метод split
Метод split разбивает строки в массив по указанному в первом параметре разделителю. Если он не задан — вернется вся строка. Если он задан как пустые кавычки, то каждый символ строки попадет в отдельный элемент массива. Вторым необязательным параметром можно указать максимальное количество элементов в получившемся массиве.
Синтаксис
строка.split([разделитель], [максимальное количество элементов]);
Пример
Пусть дана некоторая строка с дефисами. Давайте разобьем эту строку в массив по разделителю ‘-‘ :
let str = ‘ab-cd-ef’; let arr = str.split(‘-‘); console.log(arr);
Результат выполнения кода:
Пример
Давайте опять разобьем строку по разделителю ‘-‘ , однако вторым параметром укажем максимальное количество элементов в получившемся массиве, например, 2 . В этом случае в массив запишется только 2 элемента:
let str = ‘ab-cd-ef’; let arr = str.split(‘-‘, 2); console.log(arr);
Результат выполнения кода:
Пример
Давайте каждый символ строки запишем в отдельный элемент массива:
let str = ‘abcde’; let arr = str.split(»); console.log(arr);
Результат выполнения кода:
Пример
Давайте первые 3 символа строки запишем в отдельные элементы массива:
let str = ‘abcde’; let arr = str.split(», 3); console.log(arr);
Результат выполнения кода:
Пример
Давайте с помощью split разобьем строку с числами. Обратите внимание на то, что в результате получится массив строк, а не массив чисел:
let str = ‘12345’; let arr = str.split(»); console.log(arr);
Результат выполнения кода:
Пример . Применение
Давайте перевернем символы строки в обратном порядке. Для этого разобьем строку в массив с помощью split по разделителю » (это разместит каждый символ строки в отдельный элемент массива), перевернем этот массив с помощью reverse и затем сольем перевернутый массив обратно с помощью join :
let str = ‘123456789’; let arr1 = str.split(»); let arr2 = arr1.reverse(); let res = arr2.join(»); console.log(res);
Результат выполнения кода:
Пример . Применение
Упростим решение предыдущей задачи — сольем все команды в цепочку:
let str = ‘123456789’; let res = str.split(»).reverse().join(»); console.log(res);
Результат выполнения кода:
Пример . Применение
Дана строка с цифрами. Найдем сумму цифр из этой строки. Для этого разобьем строку в массив, а затем переберем этот массив и найдем его сумму. Нас ждет подвох: split возвращает строки, поэтому при суммировании преобразуем эти цифры-строки в настоящие числа с помощью Number :
let str = ‘12345’; let arr = str.split(»); let sum = 0; for (let i = 0; i < arr.length; i++) < sum += Number(arr[i]); >console.log(sum);
Результат выполнения кода:
Пример . Применение
Дано число. Давайте запишем каждую цифру этого числа в отдельный элемент массива. Тут есть подвох — split применяется только к строкам, а у нас число. Преобразуем вначале число к строке с помощью String , а затем применим split :
let num = 12345; let str = String(num); let arr = str.split(»); console.log(arr);
Результат выполнения кода:
Смотрите также
- метод join ,
который сливает элементы массива в строку - метод split ,
который разбивает строку по регулярке - метод reverse ,
который изменяет порядок элементов в массиве на обратный - свойство length ,
которое позволяет узнать длину строки
Практическое руководство. Преобразование строки (String) в массив символов в Visual Basic
Иногда полезно иметь данные о символах в строке и позиции этих символов в строке, например при анализе строки. В этом примере показано, как получить массив символов в строке, вызвав метод строки ToCharArray .
Пример 1
В этом примере показано, как разделить строку Char на массив и как разделить строку на String массив текстовых символов Юникода. Это различие объясняется тем, что текстовые символы Юникода могут состоять из двух или более Char символов (например, суррогатной пары или объединяющей последовательности символов). Дополнительные сведения см. в разделах TextElementEnumerator и Стандарт Юникода.
Dim testString1 As String = "ABC" ' Create an array containing "A", "B", and "C". Dim charArray() As Char = testString1.ToCharArray
Пример 2
Разделить строку на текстовые символы Юникода сложнее, но это необходимо, если вам нужны сведения о визуальном представлении строки. В этом примере метод используется SubstringByTextElements для получения сведений о текстовых символах Юникода, составляющих строку.
' This string is made up of a surrogate pair (high surrogate ' U+D800 and low surrogate U+DC00) and a combining character ' sequence (the letter "a" with the combining grave accent). Dim testString2 As String = ChrW(&HD800) & ChrW(&HDC00) & "a" & ChrW(&H300) ' Create and initialize a StringInfo object for the string. Dim si As New System.Globalization.StringInfo(testString2) ' Create and populate the array. Dim unicodeTestArray(si.LengthInTextElements - 1) As String For i As Integer = 0 To si.LengthInTextElements - 1 unicodeTestArray(i) = si.SubstringByTextElements(i, 1) Next
См. также раздел
- Chars[]
- System.Globalization.StringInfo
- Практическое руководство. Доступ к символам в строках
- Преобразование между строками и другими типами данных в Visual Basic
- Строки
Совместная работа с нами на GitHub
Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.
Создание массивов строк
Строковые массивы были введены в R2016b. Строковые массивы хранят части текста и обеспечивают набор функций для работы с текстом как данные. Можно индексировать в, измениться и конкатенировать массивы строк, как вы можете с массивами любого другого типа. Также можно получить доступ к символам в строке и добавить текст к строкам с помощью plus оператор. Чтобы перестроить строки в массиве строк, используйте функции, такие как split соединение , и sort .
Создание массивов строк от переменных
MATLAB® обеспечивает строковые массивы, чтобы сохранить части текста. Каждый элемент массива строк содержит последовательность символов 1 на n.
Начиная в R2017a, можно создать строку с помощью двойных кавычек.
str = "Hello, world"
str = "Hello, world"
Как альтернатива, можно преобразовать вектор символов в строку с помощью string функция. chr 1 17 вектор символов. str строка 1 на 1, которая имеет тот же текст как вектор символов.
chr = 'Greetings, friend'
chr = 'Greetings, friend'
str = string(chr)
str = "Greetings, friend"
Создайте массив строк, содержащий несколько строк с помощью [] оператор. str 2 3 массив строк, который содержит шесть строк.
str = ["Mercury","Gemini","Apollo"; "Skylab","Skylab B","ISS"]
str = 2x3 string "Mercury" "Gemini" "Apollo" "Skylab" "Skylab B" "ISS"
Найдите длину каждой строки в str с strlength функция. Используйте strlength , не length , определить количество символов в строках.
L = strlength(str)
L = 2×3 7 6 6 6 8 3
Как альтернатива, можно преобразовать массив ячеек из символьных векторов в массив строк с помощью string функция. MATLAB отображает строки в строковых массивах с двойными кавычками и векторы символов отображений в массивах ячеек с одинарными кавычками.
C = 'Mercury','Venus','Earth'>
C = 1×3 cell
str = string(C)
str = 1x3 string "Mercury" "Venus" "Earth"
В дополнение к векторам символов можно преобразовать числовой, datetime, длительность и категориальные значения к строкам с помощью string функция.
Преобразуйте числовой массив в массив строк.
X = [5 10 20 3.1416]; string(X)
ans = 1x4 string "5" "10" "20" "3.1416"
Преобразуйте значение datetime в строку.
d = datetime('now'); string(d)
ans = "24-Aug-2021 23:47:15"
Кроме того, можно считать текст из файлов в строковые массивы с помощью readtable textscan , и fscanf функции.
Создание пустых и отсутствующих строк
Строковые массивы могут содержать и пустые и отсутствующие значения. Пустая строка содержит нулевые символы. Когда вы отображаете пустую строку, результатом является пара двойных кавычек ни с чем между ними ( «» ). Отсутствующая строка является строкой, эквивалентной NaN для числовых массивов. Это указывает, где массив строк имеет отсутствующие значения. Когда вы отображаете отсутствующую строку, результатом является , без кавычек.
Создайте массив пустой строки с помощью strings функция. Когда вы вызываете strings без аргументов это возвращает пустую строку. Обратите внимание на то, что размер str 1 на 1, не 0 на 0. Однако str содержит нулевые символы.
str = strings
Создайте пустой символьный вектор с помощью одинарных кавычек. Обратите внимание на то, что размер chr 0 на 0.
chr = 0x0 empty char array
Создайте массив строк, где каждым элементом является пустая строка. Можно предварительно выделить массив строк с strings функция.
str = strings(2,3)
str = 2x3 string "" "" "" "" "" ""
Чтобы создать отсутствующую строку, преобразуйте отсутствующее значение с помощью string функция. Отсутствующая строка отображается как .
str = string(missing)
Можно создать массив строк и с пустыми и с отсутствующими строками. Используйте ismissing функция, чтобы определить, какими элементами являются строки с отсутствующими значениями. Обратите внимание на то, что пустая строка не является отсутствующей строкой.
str(1) = ""; str(2) = "Gemini"; str(3) = string(missing)
str = 1×3 string «» «Gemini»
ismissing(str)
ans = 1x3 logical array 0 0 1
Сравните отсутствующую строку с другой строкой. Результатом всегда является 0 ложь ), даже когда вы сравниваете отсутствующую строку с другой отсутствующей строкой.
str = string(missing); str == "Gemini"
ans = logical 0
str == string(missing)
ans = logical 0
Доступ к элементам массива строк
Строковые массивы поддерживают операции над массивами, такие как индексация и изменение. Используйте индексацию массива, чтобы получить доступ к первой строке str и все столбцы.
str = ["Mercury","Gemini","Apollo"; "Skylab","Skylab B","ISS"]; str(1,:)
ans = 1x3 string "Mercury" "Gemini" "Apollo"
Доступ к второму элементу во второй строке str .
str(2,2)
ans = "Skylab B"
Присвойте новую строку вне границ str . MATLAB расширяет массив и заполняет освобожденные элементы отсутствующими значениями.
str(3,4) = "Mir"
str = 3x4 string "Mercury" "Gemini" "Apollo" "Skylab" "Skylab B" "ISS" "Mir"
Доступ к символам в строках
Можно индексировать в массив строк с помощью фигурных скобок, <> , к символам доступа непосредственно. Используйте фигурные скобки, когда необходимо будет получить доступ и изменить символы в строковом элементе. Индексация с фигурными скобками обеспечивает совместимость для кода, который мог работать или со строковыми массивами или с массивами ячеек из символьных векторов. Но каждый раз, когда возможно, используйте строковые функции, чтобы работать с символами в строках.
Доступ к второму элементу во второй строке с фигурными скобками. chr вектор символов, не строка.
str = [«Mercury»,«Gemini»,«Apollo»; «Skylab»,«Skylab B»,«ISS»]; chr = str
chr = 'Skylab B'
Доступ к вектору символов и возвращает первые три символа.
str(1:3)
ans = 'Sky'
Найдите пробелы в строке и замените их на тире. Используйте isspace функция, чтобы смотреть отдельные символы в строке. isspace возвращает логический вектор, который содержит истинное значение везде, где существует пробел. Наконец, отобразите модифицированный строковый элемент, str(2,2) .
TF = isspace(str)
TF = 1x8 logical array 0 0 0 0 0 0 1 0
str(TF) = "-"; str(2,2)
ans = "Skylab-B"
Обратите внимание на то, что в этом случае можно также заменить пробелы с помощью replace функция, не обращаясь к изогнутой индексации фигурной скобки.
replace(str(2,2)," ","-")
ans = "Skylab-B"
Конкатенация строк в массив строк
Конкатенация представляет в виде строки в массив строк так же, как вы конкатенировали бы массивы любого другого вида.
Конкатенация двух строковых массивов с помощью квадратных скобок, [] .
str1 = ["Mercury","Gemini","Apollo"]; str2 = ["Skylab","Skylab B","ISS"]; str = [str1 str2]
str = 1x6 string "Mercury" "Gemini" "Apollo" "Skylab" "Skylab B" "ISS"
Транспонируйте str1 и str2 . Конкатенация их и затем вертикально конкатенирует заголовки столбцов на массив строк. Когда вы конкатенируете векторы символов в массив строк, векторы символов автоматически преобразованы в строки.
str1 = str1'; str2 = str2'; str = [str1 str2]; str = [["Mission:","Station:"] ; str]
str = 4x2 string "Mission:" "Station:" "Mercury" "Skylab" "Gemini" "Skylab B" "Apollo" "ISS"
Добавление текста к строкам
Чтобы добавить текст к строкам, используйте plus оператор + . plus оператор добавляет текст к строкам, но не изменяет размер массива строк.
Добавьте фамилию к массиву имен. Если вы добавляете вектор символов к строкам, то вектор символов автоматически преобразован в строку.
names = ["Mary";"John";"Elizabeth";"Paul";"Ann"]; names = names + ' Smith'
names = 5x1 string "Mary Smith" "John Smith" "Elizabeth Smith" "Paul Smith" "Ann Smith"
Добавьте различные фамилии. Можно добавить текст к массиву строк от массива строк или от массива ячеек из символьных векторов. Когда вы добавляете нескалярные массивы, они должны быть одного размера.
names = ["Mary";"John";"Elizabeth";"Paul";"Ann"]; lastnames = ["Jones";"Adams";"Young";"Burns";"Spencer"]; names = names + " " + lastnames
names = 5x1 string "Mary Jones" "John Adams" "Elizabeth Young" "Paul Burns" "Ann Spencer"
Добавьте отсутствующую строку. Когда вы добавляете отсутствующую строку с оператором плюс, выход является отсутствующей строкой.
str1 = "Jones"; str2 = string(missing); str1 + str2
Разделение, присоединение, и сортировка массива строк
MATLAB обеспечивает богатый набор функций, чтобы работать со строковыми массивами. Например, можно использовать split соединение , и sort функции, чтобы перестроить массив строк names так, чтобы имена были в алфавитном порядке фамилией.
Разделите names на пробелах. Разделение изменений names от массива строк 5 на 1 до 5 2 массива.
names = ["Mary Jones";"John Adams";"Elizabeth Young";"Paul Burns";"Ann Spencer"]; names = split(names)
names = 5x2 string "Mary" "Jones" "John" "Adams" "Elizabeth" "Young" "Paul" "Burns" "Ann" "Spencer"
Переключите столбцы names так, чтобы фамилии были в первом столбце. Добавьте запятую после каждой фамилии.
names = [names(:,2) names(:,1)]; names(:,1) = names(:,1) + ','
names = 5x2 string "Jones," "Mary" "Adams," "John" "Young," "Elizabeth" "Burns," "Paul" "Spencer," "Ann"
Соедините фамилии и имена. join функционируйте помещает пробел между строками, которые он соединяет. После соединения, names массив строк 5 на 1.
names = join(names)
names = 5x1 string "Jones, Mary" "Adams, John" "Young, Elizabeth" "Burns, Paul" "Spencer, Ann"
Сортировка элементов names так, чтобы они были в алфавитном порядке.
names = sort(names)
names = 5x1 string "Adams, John" "Burns, Paul" "Jones, Mary" "Spencer, Ann" "Young, Elizabeth"
Смотрите также
Похожие темы
- Анализ текстовых данных с массивами строк
- Поиск и замена текста
- Сравнение текста
- Тест на пустые строки и отсутствующие значения
- Часто задаваемые вопросы о строковых массивах
- Обновите свой код, чтобы принять строки
Открытый пример
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
Документация MATLAB
Поддержка
- MATLAB Answers
- Помощь в установке
- Отчеты об ошибках
- Требования к продукту
- Загрузка программного обеспечения
© 1994-2021 The MathWorks, Inc.
- Условия использования
- Патенты
- Торговые марки
- Список благодарностей
Для просмотра документации необходимо авторизоваться на сайте
Войти
Памятка переводчика
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста — например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.