Для первой части вашей проблемы вы можете использовать функцию Matlab inputdlg
, которая запрашивает диалоговое окно, запрашивающее ввод данных пользователем. Затем вы можете обрезать ввод, как вам нравится.
Для второй части вашей проблемы функция isletter
, которую вы упомянули, скажет вам для каждого символа индивидуально, являются ли они буквенными буквами, так что вы можете суммировать этот результат и проверить, например, между 1 и 19. Это скажет вам, что ваша строка содержит как буквы, так и цифры.
Наконец, вы можете поместить свой код в цикл while и изменить переменную, когда ваши условия будут выполнены, чтобы вы могли выйти за пределы цикла.
Этот пример кода демонстрирует это:
tryagain=1;
while(tryagain)
answer=inputdlg('Insert a 20 character string that contains both letters and numbers','User input');
answer=answer{1};
if(numel(answer)>20)
answer=answer(1:20);
end
letters=sum(isletter(answer));
numbers=sum(~arrayfun(@(x)isempty(str2num(x)),answer));
if(letters>0 && numbers>0)
tryagain=0;
end
end