Separate numbers from text

30 ビュー (過去 30 日間)
Deepa Maheshvare
Deepa Maheshvare 2019 年 9 月 9 日
コメント済み: Walter Roberson 2020 年 2 月 22 日
I have the follwing character array
C = {'LAN310'}
{'SHA550'}
Expercted result:
C = [ 310 550]
From one of the answers posted in the previous posts, I tried the following
D = regexprep(C,'[\d"]','');
The above replaces the numbers with null, but I would like to replace characters with null. Any suggestions?

採用された回答

Walter Roberson
Walter Roberson 2019 年 9 月 9 日
編集済み: Walter Roberson 2019 年 9 月 9 日
D = str2double( regexrep(C, '\D', '') );
Note that this will replace all + - . and e E d D used as exponents, and that if there are multiple numbers separated by non-numbers then this will jam them together.
Another approach is
D = str2double( C(ismember(C, '0':'9')) );

その他の回答 (1 件)

madhan ravi
madhan ravi 2019 年 9 月 9 日
編集済み: madhan ravi 2019 年 9 月 9 日
C = str2double(regexprep(C,'[a-zA-Z^()]','')).'
  1 件のコメント
Walter Roberson
Walter Roberson 2020 年 2 月 22 日
There is a maxim in computer reliability and security engineering:
"Do not validate input by rejecting characters or patterns: only ever validate input by accepting characters or patterns that you know you can deal with."
When you work by rejecting things, then there is the possibility that you forgot to reject something, or that later some new method will be introduced that permits the user to slip new values past your validation. For example the pattern [a-zA-Z^()] does not reject & or ; or # or % so it would be happy to pass through A or %41 and a later step might do the translation to A or A .
There was a whole spate of security problems when unicode encoding was added to the HTML standard: code that validated by rejecting the old escape sequences stopped working when the libraries added a new escape sequence.

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeCharacters and Strings についてさらに検索

タグ

製品

Community Treasure Hunt

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

Start Hunting!

Translated by