gpt4 book ai didi

ruby - 如何从 Ruby 中的字符串中删除所有非 ASCII 字符

转载 作者:数据小太阳 更新时间:2023-10-29 06:35:13 24 4
gpt4 key购买 nike

我好像是一个很简单也很需要的方法。我需要从字符串中删除所有非 ASCII 字符。例如 © 等。请参见以下示例。

#coding: utf-8
s = " Hello this a mixed string © that I made."
puts s.encoding
puts s.encode

输出:

UTF-8
Hello this a mixed str

ing ┬⌐ 我做的。

当我将其提供给 Watir 时,它会产生以下错误:不兼容的字符编码:UTF-8 和 ASCII-8BIT

所以我的问题是我想在使用它之前去掉所有非 ASCII 字符。我将不知道源字符串“s”使用哪种编码。

我已经搜索和试验了一段时间。

如果我尝试使用

  puts s.encode('ASCII-8BIT')

它给出了错误:

 : "\xC2\xA9" from UTF-8 to ASCII-8BIT (Encoding::UndefinedConversionError)

最佳答案

您可以直接将您询问的内容翻译成Regexp。你写道:

I want to get rid of all non ASCII characters

我们可以稍微改写一下:

I want to substitue all characters which don't thave the ASCII property with nothing

这是一个可以直接Regexp表达的语句:

s.gsub!(/\P{ASCII}/, '')

作为替代方案,您还可以使用 String#delete!:

s.delete!("^\u{0000}-\u{007F}")

关于ruby - 如何从 Ruby 中的字符串中删除所有非 ASCII 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3200594/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com