【问题标题】:Remove non ASCII characters in octave删除八度音阶中的非 ASCII 字符
【发布时间】:2016-07-21 05:21:03
【问题描述】:

我正在尝试使用 OCTAVE 删除从数据文件中读取的非 ASCII 字符,但我无法使其正常工作。我尝试获取这些“奇怪”字符的 ASCII 码,它们确实有随机的 ASCII 码。一个示例字符串是这样的:

asdqwФЕДЕРАЛЬ234НОЕ234 АГЕНТСqewwqedasТВО ПasdsadО ОБРАasdasdЗОВАНИЮ Госудаsadasdsagwfрственная акадеasdмия профессиональной п

你们对如何从这个字符串中删除非 ASCII 字符有什么建议吗?或者更好的是,我将如何确定给定字符串是否包含非 ASCII 字符?

提前致谢!

【问题讨论】:

  • 我认为您可以使用正则表达式相当容易地做到这一点。这是一个 C# 示例,但实际的正则表达式部分应该是相同的。您只需从 Octave 而不是 C# 调用它:stackoverflow.com/a/3303435/1011724
  • 我今天才开始学习 octave.. 所以我还不知道如何实现它:/
  • regexprep:MATLAB,Octave。那将是:out = regexprep(str, '[^0-9a-zA-Z]+', '') 其中str 是您的输入字符串。
  • 还有isstrprop函数可以提供帮助。
  • 我通常使用regex101 作为学习/测试正则表达式的游乐场。 Python 的正则表达式与 MATLAB/Octave 几乎相同。

标签: string matlab replace octave non-ascii-characters


【解决方案1】:

要删除 0..127 十进制范围内的所有非 ASCII 字符,请使用

a = "asdqwФЕДЕРАЛЬ234НОЕ234 АГЕНТСqewwqedasТВО ПasdsadО ОБРАasdasdЗОВАНИЮ Госудаsadasdsagwfрственная акадеasdмия профессиональной п";
a(! isascii (a)) = []

给了

a = asdqw234234 qewwqedas asdsad asdasd sadasdsagwf asd 

如果你只是想检查是否有非 ASCII 字符:

any (! isascii("foobar"))
ans = 0
any (! isascii("foobaröäüß"))
ans =  1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-31
    相关资源
    最近更新 更多