Select part of a string

234 visualizzazioni (ultimi 30 giorni)
JE101
JE101 il 23 Mar 2017
Commentato: Gina Eldridge il 4 Apr 2022
I have a large column vector of strings. The strings vary in length. I would like to select out the last 5 characters of the actual string (i.e., I don't want 5 blank spaces that you would get by converting it to a char array and then selecting the last 5 columns).
I have a complicated way of doing this by switching between a string array and a character array and using sub2ind, but I was wondering if there is a simpler way to do this. I've tried using strtok and flip, but can't get it to do exactly what I want.
If possible, I'd like to avoid using a loop (because of the size of the array).
If you use excel, I want to do the equivalent of the RIGHT function.
Any suggestions would be much appreciated! Thanks.

Risposta accettata

Stephen23
Stephen23 il 23 Mar 2017
Modificato: Stephen23 il 23 Mar 2017
A string array treats each string as being atomic, whereas you need to be able to access each character as atomic. Use cellstr to convert to a cell array of chars, and then use cellfun to extract the parts you need:
cellfun(@(s)s(end-4:end),cellstr(inp),'uni',0)

Più risposte (1)

Steven Lord
Steven Lord il 23 Mar 2017
Another approach, if you're using the string class introduced in release R2016b, is to use extractAfter.
>> animals = {'cat'; 'elephant'; 'dog'; 'hippopotamus'};
>> animalsString = string(animals);
>> lastTwoLetters = extractAfter(animalsString, strlength(animalsString)-2)
lastTwoLetters =
4×1 string array
"at"
"nt"
"og"
"us"
  2 Commenti
JE101
JE101 il 23 Mar 2017
That's great. Thanks Steven.
Gina Eldridge
Gina Eldridge il 4 Apr 2022
love it

Accedi per commentare.

Categorie

Scopri di più su Characters and Strings in Help Center e File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by