MATLAB: использовать первую букву в строковом массиве - PullRequest
0 голосов
/ 27 апреля 2018

Как я должен получить доступ, скажем, к первому символу каждого члена массива строк? Например, я хотел бы использовать первую букву в каждом слове.

str = ["house", "stone", "summer"]

Ответы [ 4 ]

0 голосов
/ 28 апреля 2018

Адаптируя ответ @ matlabbit, воспользуйтесь тем, что последние версии MATLAB могут выдавать string массивы из arrayfun, вы можете написать

capitalize = @(s) upper(extractBefore(s, 2)) + extractAfter(s, 1)
arrayfun(capitalize, ["house", "stone", "summer"])
0 голосов
/ 27 апреля 2018

Вы можете сделать это, используя обычную нарезку. Чтобы получить заглавную букву, я использовал upper function

for i=1:size(str,2)
    str{i}(1)=upper(str{i}(1))
end
0 голосов
/ 27 апреля 2018

Я думаю, что лучшее решение - это использовать extractBefore и extractAfter:

upper(extractBefore(str,2)) + extractAfter(str,1);

Вот тест производительности:

function profFunc

    str = ["house", "stone", "summer"];  

    n = 1E5;

    % My solution
    tic;
    for i = 1:n
        str = upper(extractBefore(str,2)) + extractAfter(str,1);
    end
    toc;

    % Mikhail Genkin's solution
    tic;
    for i = 1:n
        for i=1:size(str,2)
            str{i}(1)=upper(str{i}(1));
        end
    end
    toc;

    % EdR's Solution
    tic;
    for i = 1:n
        str = string(cellfun(@(x) [upper(x(1)) x(2:end)], str, 'UniformOutput', false));
    end
    toc
end

>> profFunc
Elapsed time is 0.121556 seconds.
Elapsed time is 1.034617 seconds.
Elapsed time is 10.319375 seconds.
0 голосов
/ 27 апреля 2018

Следующий код сделает то, что вы хотите:

string(cellfun(@(x) [upper(x(1)) x(2:end)], str, 'UniformOutput', false))

cellfun применяет следующую анонимную функцию к переменной str.

Анонимная функция просто возвращает конкатенацию верхнего регистра первого элемента, за которым следует остальная часть строки.

string преобразует массив ячеек обратно в массив строк.

Отредактировано: для преобразования обратно в массив строк в соответствии с запросом в комментариях.

Однако другой ответ может привести к более простому чтению кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...