0

有谁知道如何在 matlab 中检测非 ASCII 字符。

我想通过正则表达式检测非 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

显示您已选择覆盖!

4

2 回答 2

2

这些字符%^& ASCII 字符,它们只是不是字母。如果您想测试是否有任何非字母,您可以这样做:

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

请注意,我在搜索表达式中包含了一个空格,以便字符串中允许有空格。要允许任何空白字符,'[^\sA-Z]'请用作搜索表达式。

如果您想检查是否存在扩展的 ASCII字符,您甚至不需要正则表达式。您可以检查字符串中字符的任何数字编码是否大于或等于 128,如下所示:

if any('hello world ÁÂÃÄÅ' >= 128)
  display('You have extended ASCII characters');
end
于 2012-04-24T16:53:16.113 回答
1

检查不可打印的 ascii(包括扩展 ascii)代码

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

仅检查扩展的 ascii 代码

[\x{80}-\x{ff}]
于 2012-04-24T17:26:33.470 回答