Массивы строк
В программировании типично использование массивов строк. Например, процессор ввода в базу данных может проверять команды пользователя в строковом массиве. Для создания массива строк используется двумерный массив символов. Левый индекс определяет число строк, а правый индекс — максимальное число символов в каждой строке. Данный фрагмент кода объявляет массив из 30-ти строк, причем каждая может содержать до 79 символов включительно:
char str_array [30] [80];
Доступ к отдельным строкам очень прост — необходимо просто определить левый индекс. Следующий оператор вызывает функцию gets(), передавая ей в качестве параметра третью строку массива str_array:
Данная функция эквивалентна
но предыдущий вариант более типичен при написании профессиональных программ.
Чтобы лучше понять принцип работы символьных массивов, рассмотрим следующую программу, использующую массив как основу простейшего текстового редактора.
#include
#define MAX 100
#define LEN 255
char text[MAX][LEN];
/* простейший текстовый редактор */
int main(void)
register int t, i, j;
for (t=0; t printf («%d: «, t);
gets(text [t]);
if(!*text [t]) break; /* выход по пустой строке */
>
/* посимвольный вывод текста */
for (i=0; i for(j=0; text[i][j]; j++) printf(«%с», text[i][j]);
printf («%с», ‘\n’);
>
return 0;
>
Данная программа осуществляет ввод текста, пока не встретится пустая строка. Затем она отображает каждую строку. В целях иллюстрации она выводит текст посимвольно, с использованием первого индекса. Поскольку каждая строка массива завершается нулевым символом, подпрограмма, отображающая текст, может быть упрощена:
Как создать string массив в java
Для создания массива строк в Java нужно определить тип данных элементов массива как String и указать количество элементов в массиве. Вот пример создания массива строк:
String[] myArray = new String[3]; myArray[0] = "Hello"; myArray[1] = "World"; myArray[2] = "Java";
В этом примере мы создаем массив строк myArray , который содержит 3 элемента. Затем мы инициализируем каждый элемент массива строк, присваивая им соответствующие значения.
Можно также создать массив строк с помощью оператора инициализации:
String[] myArray = "Hello", "World", "Java">;
В этом примере мы создаем массив строк myArray и заполняем его значениями при инициализации.
Кроме того, можно создать массив строк вместе с их инициализацией с помощью следующего синтаксиса:
String[] myArray = new String[]"Hello", "World", "Java">;
В этом примере мы создаем массив строк myArray и инициализируем его значениями при создании массива.
Создание массивов строк
Строковые массивы были введены в 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.
Как создать массив строк?
Как в C++ создается массив строк? В JS это делается вот так: var arr = [‘one’, ‘two’]; В C++ нет типа данных String как я понял. Как решить вопрос?
Отслеживать
218k 15 15 золотых знаков 117 117 серебряных знаков 229 229 бронзовых знаков
задан 27 янв 2019 в 13:16
uzi_no_uzi uzi_no_uzi
2,186 2 2 золотых знака 17 17 серебряных знаков 50 50 бронзовых знаков
в с++ можно самому создавать типы данных или пользоваться бибилиотечными. ::std::array <::std::string, 2>arr;
27 янв 2019 в 13:20
В С++ существует масса разных способов «создать массив строк» и выбор конкретного способа зависит о того , зачем вам нужен этот массив и что вы с ним потом собираетесь делать. Невозможно дать осмысленного ответа на такой огульный вопрос, не обладая более конкретной информацией.