2012-04-24 3 views
0

Кто-нибудь знает, как обнаружить несимвольные символы в MATLAB.Как проверить расширенные символы ascii в matlab

я думал обнаружения присутствия, не являющихся символами ASCII с помощью регулярных выражений

if (regexpi('hello world%^&%','![A-Z]*'))display('You have non ascii characters') 

, но это не похоже на работу

обновления: -

if (regexpi('hello word','^[A-Za-z0-9]*')) 
    display('You have chosen to overwrite!'); 
    end 

дисплеев Вы выбрали перезаписать!

+0

Я подозреваю, что ваш код должен был быть что-то вроде этого: 'если (regexpi ('привет мир%^&%', '[^ AZ] * ')) («У вас есть буквы с заглавными буквами»); end'. Но это проверяет только буквы верхнего регистра. Это все символы ascii. – Pursuit

+0

Связанный/возможный дубликат [Matlab - как заменить все специальные символы в векторе?] (Http://stackoverflow.com/questions/3882609/matlab-how-to-replace-all-the-special-characters- in-a-vector) – gnovice

ответ

2

%^& Символы являются ASCII символы, они просто не буквы. Если вы желаете, чтобы проверить, если есть какие-либо не-буквы, вы можете сделать это:

if (regexpi('hello world%^&%','[^ A-Z]')) 
    display('You have non-letter characters'); 
end 

Обратите внимание, что я включал пробел в выражении поиска так, что допускаются пробелы в строке. Чтобы разрешить любой символ, используйте '[^\sA-Z]' как выражение поиска.

Если вы хотите проверить наличие символов extended ASCII, вам даже не нужны регулярные выражения. Вы можете просто проверить, если какие-либо из цифровых кодировок символов в строке больше или равно 128, например, так:

if any('hello world ÁÂÃÄÅ' >= 128) 
    display('You have extended ASCII characters'); 
end 
+0

Я обновил свой вопрос. Я действительно хотел обнаружить расширенные символы ASCII. – klijo

+0

wow thanks gnovice. Он работает как crisp – klijo

+1

Этот трюк работает, потому что MATLAB представляет строки как массивы 8-битных целых чисел, поэтому все трюки, которые вы будете использовать в числовом массиве, также работают на строках. Это включает в себя такие вещи, как 'repmat()', 'horzcat()' и 'vertcat()', что [иногда полезно.] (Http://stackoverflow.com/questions/10093288/matlab-plot-dollar-symbol- on-axis/10094066 # 10094066) –

1

Чтобы проверить, не печатные знаки (включая Xtended ASCII) коды

[^\s\x{20}-\x{7e}] 

для проверки только расширенных кодов ASCII

[\x{80}-\x{ff}] 
+0

это не работает для меня :( – klijo

+0

Что не работает точно? Возможно, вам нужно использовать Matlab regexp(). Вот ссылка http://www.mathworks.com/ help/techdoc/matlab_prog/f0-42649.html? nocookie = true. Проверьте классы символов. – sln

Смежные вопросы