Finding a character in a string?

조회 수: 80 (최근 30일)
Johny
Johny 2013년 12월 3일
댓글: Jos (10584) 2013년 12월 3일
so I have the following line of code:
hashtag=lower(input('Which hashtag would you like information on?','s'));
This prompts the user to input a hashtag, like say '#helloworld'. However, the program runs even without the user putting the hashtag. So it runs even if they only input "helloworld", which presents problems for me later on. How can I get the code to stop reading and present an error message if there is no hashtag symbol in the user's input? Apparently the # character means something in matlab as well which is causing me problems.
I have this so far but it seems not to work:
if k=(strfind(hashtag,'#')))
error('Please include the hashtag')
end

채택된 답변

The Matlab Spot
The Matlab Spot 2013년 12월 3일
using start anchor with regexp will ensure that you '#' as the first character of you input string.
hashtag=lower(input('Which hashtag would you like information on?','s'));
if(isempty(regexp(hashtag,'^#','once')))
error('Please include the hashtag')
end
  댓글 수: 2
Johny
Johny 2013년 12월 3일
This answer is more robust than the one above, so best answer goes to you. I didn't know the ^ symbol did anything at all actually. I learned something!Thanks to both of you guys though.
Jos (10584)
Jos (10584) 2013년 12월 3일
using regexp for this problem is like killing a mosquito with a nuclear missile ...

댓글을 달려면 로그인하십시오.

추가 답변 (2개)

sixwwwwww
sixwwwwww 2013년 12월 3일
Dear Johny, try this:
hashtag=lower(input('Which hashtag would you like information on?','s'));
if isempty(strfind(hashtag, '#'))
error('Please include the hashtag')
end

Jos (10584)
Jos (10584) 2013년 12월 3일
Per definition a hashtag starts with a # sign followed by one or more letters or numbers
So, quite simply, check all these three requirements:
str = lower(input('Which hashtag would you like information on?','s'));
if numel(str)<2 || str(1) ~= '#' || ~all(ismember(str(2:end),['a':z' '_' '0':'9']))
error('Input is not a valid hashtag') ;
end

카테고리

Help CenterFile Exchange에서 String Parsing에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by