Как создать массив строк
Перейти к содержимому

Как создать массив строк

  • автор:

Массивы строк

В программировании типично использование массивов строк. Например, процессор ввода в базу данных может проверять команды пользователя в строковом массиве. Для создания массива строк используется двумерный массив символов. Левый индекс определяет число строк, а правый индекс — максимальное число символов в каждой строке. Данный фрагмент кода объявляет массив из 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

В С++ существует масса разных способов «создать массив строк» и выбор конкретного способа зависит о того , зачем вам нужен этот массив и что вы с ним потом собираетесь делать. Невозможно дать осмысленного ответа на такой огульный вопрос, не обладая более конкретной информацией.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *