Matlab String Split, когда это объект String

Другие ответы на аналогичный вопрос работают, если в одинарных кавычках строка str1 = 'MynameisJohn'. Например, str1(1:2) дает "Мой".

Но если строка str1 = "MynameisJohn" с двойными кавычками, приведенное выше использование str1 (1: 2) не работает и выдает ошибку выхода за границы. Размер str1 в этом случае составляет всего 1 на 1 матрицу.

Во втором случае, как мне разбить строку, чтобы получить слова в ней, предполагая, что пробелов нет (следовательно, разделители не могут использоваться). Мы можем предположить, что длина моего раскола постоянна.

РЕДАКТИРОВАТЬ Я думаю, что я нашел ответ сам. str2 = char(str1) преобразует строковый массив str1 в массив символов, а затем работает аналогичная конструкция str2(1:2).

1 ответ

Преобразование в char, а затем индексация работает так, как вы опубликовали. Если вы хотите, чтобы результат оставался в виде строки, другой способ извлечь подстроку - это использовать функции извлечения. Например,

str1 = string('MynameisJohn');
substr = extractBefore(str1,3)

substr = 

  string

    "My"

В этом случае substr по-прежнему является строковым типом. Документ для extractBefore находится по адресу https://www.mathworks.com/help/matlab/ref/extractbefore.html

Другие вопросы по тегам