str = "sensor_serials": {"H1": "3637", "H2": "3638", "H3": "2787"},
I would like to extract the number 3637, 3638, and 2787 from the above string. How should I do it? Thanks!

1 件のコメント

Star Strider
Star Strider 2022 年 9 月 12 日
Something is wrong with that because it throws this error —
str = "sensor_serials": {"H1": "3637", "H2": "3638", "H3": "2787"}
Operator ':' is not supported for operands of type 'string'.

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

 採用された回答

Voss
Voss 2022 年 9 月 12 日

0 投票

str = '"sensor_serials": {"H1": "3637", "H2": "3638", "H3": "2787"}'
str = '"sensor_serials": {"H1": "3637", "H2": "3638", "H3": "2787"}'
numbers = regexp(str,'"(\d+)"','tokens');
numbers = [numbers{:}]
numbers = 1×3 cell array
{'3637'} {'3638'} {'2787'}
numbers = str2double(numbers)
numbers = 1×3
3637 3638 2787

1 件のコメント

Jasmine Zhu
Jasmine Zhu 2022 年 9 月 13 日
It worked and thank you!

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

その他の回答 (1 件)

Hiro Yoshino
Hiro Yoshino 2022 年 9 月 12 日

1 投票

You can use pattern:
pat = digitsPattern(4); % Pattern
str = '"sensor_serials": {"H1": "3637", "H2": "3638", "H3": "2787"}'
str = '"sensor_serials": {"H1": "3637", "H2": "3638", "H3": "2787"}'
numbers = extract(str,pat);
string(numbers)
ans = 3×1 string array
"3637" "3638" "2787"

1 件のコメント

Jasmine Zhu
Jasmine Zhu 2022 年 9 月 13 日
Thank you for your reply. Unfortunately my matlab doesn't support digitsPattern().

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

カテゴリ

ヘルプ センター および File ExchangeCharacters and Strings についてさらに検索

質問済み:

2022 年 9 月 12 日

コメント済み:

2022 年 9 月 13 日

Community Treasure Hunt

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

Start Hunting!

Translated by