How To Detect Special Characters
Show older comments
How could I find out if there are any special characters in my string? Suppose I have the string '1asdf?', how could I detect if there is a special character in there?
2 Comments
Cedric
on 10 Sep 2017
What is the purpose? Do you need a true/false type of answer, the position of special characters, to eliminate them, ..? How to you define "special"?
William Nelson
on 10 Sep 2017
Edited: Cedric
on 10 Sep 2017
Accepted Answer
More Answers (1)
per isakson
on 10 Sep 2017
Edited: per isakson
on 10 Sep 2017
>> str = regexp( '1asdf?', '[^\w]', 'match' )
str =
'?'
where I defined not being special as "Any alphabetic, numeric, or underscore character. For English character sets, \w is equivalent to [a-zA-Z_0-9]"
In response to comment
"I need a true and false answer and a special character is anything that is not abc or 123. ?"{} would all be special characters."
>> str = '1a$s#df?';
>> is_special = false( size( str ) );
>> is_special( regexp( str, '[^a-zA-Z0-9.?"{}]' ) ) = true
is_special =
0 0 1 0 1 0 0 0
>>
I assumed that "123" is short for "0123456789". However, after a second reading
is_special( regexp( str, '[^123abc]' ) ) = true
is_special =
0 0 1 1 1 1 1 1
>>
4 Comments
Cedric
on 10 Sep 2017
'[^\w]' = '\W'
per isakson
on 10 Sep 2017
Good point!
Given your comment after Per answered, William, which seems to indicate that the underscore '_' is a special character, I think that you want a variant of Per's solution:
>> specials = regexp( '1as_df?980{}', '[^A-Za-z0-9]', 'match' )
specials =
1×4 cell array
'_' '?' '{' '}'
or
>> specialsPos = regexp( '1as_df?980{}', '[^A-Za-z0-9]', 'start' )
specialsPos =
4 7 11 12
or
>> isOk = isempty( regexp( '1as_df?980{}', '[^A-Za-z0-9]', 'start' ))
isOk =
logical
0
where the pattern fully defines characters that are not special, and eliminate the underscore which is not matched by \W.
per isakson
on 10 Sep 2017
A typesetter shall follow the manuscript even if it blows out of the window. Does that make sense in English?
One more answer
>> isvarname('1a$s#df?')
ans =
0
Categories
Find more on Characters and Strings in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!