Clear Filters
Clear Filters

If I have a string consisting of words of different lengths separated by spaces, how can return a word in that string given only its starting index?

2 views (last 30 days)
As an example:
str = 'bat catch convey can cart court CUT ct CAT-scan';
...and all I have is my starting index, which is 11; consequently I want to return the word "convey" from this string. How do I proceed?
I find that "extractBetween" forces you to choose either between a start string and an end string, i.e.
newStr = extractBetween(str,startStr,endStr)
or a start position and an end position, i.e.
newStr = extractBetween(str,startPos,endPos)
Many thanks for whatever illumination you can provide.

Accepted Answer

Image Analyst
Image Analyst on 4 Jan 2019
Here's how I thought of to do it:
str = 'bat catch convey can cart court CUT ct CAT-scan';
remainingWords = strsplit(str(11:end)) % Get words starting with index 11.
theWord = remainingWords{1} % Take the first word it found.

More Answers (1)

Walter Roberson
Walter Roberson on 4 Jan 2019
Edited: Walter Roberson on 4 Jan 2019
starting_index = 11; %given
mask = str == ' ';
starts = strfind([1 mask], [1 0]);
stops = strfind([mask 1], [0 1]);
wordidx = find(starts == starting_index);
if isempty(wordidx)
error('That starting index is not the beginning of a word')
end
the_word = str(starting_index : stops(wordidx));

Categories

Find more on Characters and Strings in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!