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.

 채택된 답변

Stephen23
Stephen23 2017년 3월 23일
편집: Stephen23 2017년 3월 23일

1 개 추천

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)

추가 답변 (1개)

Steven Lord
Steven Lord 2017년 3월 23일

3 개 추천

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

JE101
JE101 2017년 3월 23일
That's great. Thanks Steven.
Gina Eldridge
Gina Eldridge 2022년 4월 4일
love it

댓글을 달려면 로그인하십시오.

카테고리

도움말 센터 및 File Exchange에서 Characters and Strings에 대해 자세히 알아보기

질문:

2017년 3월 23일

댓글:

2022년 4월 4일

Community Treasure Hunt

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

Start Hunting!

Translated by