MATLAB Answers

Get number from a string

조회 수: 145(최근 30일)
Lucas
Lucas 12 Sep 2012
I have a string that looks like this
I_am_a_String.562
I need to be able to pull the number out of that, and I was using the following to do so:
num = regexp(str, '\d+', 'match');
and that worked will I ran into strings like:
When lpdlogic21 is true....
and I started getting numbers that I didn't want, so I switched it to this:
num = regexp(lines{1}{jj}, '(?<words>\w*).(?<ID>\d*)', 'names');
but this didn't work for the off string either. It gave me num with about 20 entries in it. So my question is what can I use so I only get answers for the first string but none of the others. This is a basic question and I know I should know this by now, but I'm drawing a blank right now.

  댓글 수: 1

Matt Fig
Matt Fig 12 Sep 2012
What others? You need to give a rule for deciding when to return a number and when not to return a number.

Sign in to comment.

채택된 답변

Matt Fig
Matt Fig 12 Sep 2012
편집: Matt Fig 12 Sep 2012
What do you mean it didn't work. Seems to work here. So what numbers do you want? Only numbers that are after a '.' or what (use: '\.\d+')? Be specific!
str = 'When lpdlogic21 is true....';
num = regexp(str, '\d+', 'match')
num =
'21'

  댓글 수: 1

Matt Fig
Matt Fig 12 Sep 2012
O.k., so the rule is: if the string has any spaces whatsoever, return nothing. If it has no spaces return all numbers following a decimal. Got it.
num = {};
if ~any(isspace(str))
num = regexp(T, '(?<=\.)\d+', 'match');
end

Sign in to comment.

추가 답변(0개)


Translated by