how to combine strfind and index in one line?
3 ビュー (過去 30 日間)
古いコメントを表示
I tried to run strfind(argument,argument)(1) to return the first hit position, but matlab returns a error. It seems that I need to split the command into two lines? right?Is there any other way to make it in one line?
0 件のコメント
採用された回答
Walter Roberson
2017 年 3 月 3 日
second_last = @(V) V(end-1);
positionLast2nd = second_last(strfind(newname, '_'));
It is possible to do it without the helper function, but it really is not worth doing except to prove that you can, because the code gets obscure.
0 件のコメント
その他の回答 (2 件)
Chad Greene
2017 年 3 月 3 日
編集済み: Chad Greene
2017 年 3 月 3 日
You could use regexp with the 'once' option. For example, for this string:
str = ['Soldiers! Don''t give yourselves to brutes - men who despise you, enslave you, who '...
'regiment your lives, tell you what to do, what to think or what to feel! Who drill you,'...
'diet you, treat you like cattle, use you as cannon fodder.']
Each instance of the word you begins at the following indices:
regexp(str,'you')
ans =
22 61 74 92 109 166 176 187 208
If you only want the first instance use the 'once' option:
regexp(str,'you','once')
ans =
22
2 件のコメント
raym
2017 年 3 月 3 日
編集済み: Walter Roberson
2017 年 3 月 3 日
1 件のコメント
Walter Roberson
2017 年 3 月 3 日
We distinctly recommend against using eval. eval() often leads to subtle bugs that show up only sometimes and are hard to find. It is also a big security risk.
参考
カテゴリ
Help Center および File Exchange で Characters and Strings についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!