Find only numeric strings on cellstr array.
3 ビュー (過去 30 日間)
古いコメントを表示
I'd like to know the index of the "numerical strings" within a cellstr array.
arr = {'123', 'Hola', 'my', 'String', '', '1453', 'stay'};
A correct output will give me index 1 and 6.
isnumeric contained within cellfun doesn't work well here, I'd have to use it in combination with something else but I don't know exactly what that might be.
Any help is appreciated.
0 件のコメント
採用された回答
Krishna Sutar
2021 年 6 月 15 日
From my understanding you want to find the indexes of the strings in the cell string array that are numerical. Here is the code which might help you:
arr = {'123', 'Hola', 'my', 'String', '', '1453', 'stay'};
idx = find(~isnan(str2double(arr)))
3 件のコメント
その他の回答 (2 件)
Walter Roberson
2021 年 6 月 15 日
arr = {'123', 'Hola', 'my', 'String', '', '1453', 'stay'};
find(~cellfun(@isempty, regexp(arr, '^\d+$', 'once')))
find(matches(arr, lineBoundary + digitsPattern + lineBoundary))
0 件のコメント
Stephen23
2021 年 6 月 15 日
編集済み: Stephen23
2021 年 6 月 15 日
Writing regular expressions or pattern matching that robustly detects all valid number formats is not such a trivial task... it is more reliable to let MATLAB do the heavy lifting:
arr = {'123', 'Hola', 'my', 'String', '', '1453', 'stay', '-1.234', 'NaN', '9e-87'};
idx = strcmpi(arr,'NaN')|~isnan(str2double(arr))
find(idx)
0 件のコメント
参考
カテゴリ
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!