ruby-on-rails - 正则表达式检测字符串中的所有日语字符并将子字符串包装在标签中

标签 ruby-on-rails ruby regex

试图弄清楚如何使用正则表达式(或与此相关的任何方法)来最好地执行以下操作:

在字符串中搜索日语字符(平假名、片假名和汉字)。

用标签包裹不间断的日文字符子串。例如,もち 和名前はBenさん 会产生以下结果:

<span lang="ja">もち</span>
<span lang="ja">名前は</span>Ben<span lang="ja">さん</span>

在字符串中全局执行此操作。

最佳答案

我认为你应该能够使用:

gsub(/([\p{Hiragana}\p{Katakana}\p{Han}]+)/) { %Q{<span lang="ja">#{$1}</span>} }

例如:

'さ名前はBenさんx⽫⽬ㇰ'.gsub(/([\p{Hiragana}\p{Katakana}\p{Han}]+)/) { %Q{<span lang="ja">#{$1}</span>} }

产生:

<span lang="ja">さ名前は</span>Ben<span lang="ja">さん</span>x<span lang="ja">⽫⽬ㇰ</span>

Han 应该涵盖所有的汉字,但它也可能包括日语中不使用的汉字(抱歉,自从我不得不在这个水平我还不会日语)。

还有其他字符(例如 )可能会出现在平假名、片假名或汉字/汉字未涵盖的日文文本中,因此您可能需要使用一些扩展字符类十六进制范围取决于您正在处理的文本的确切性质以及您想要对 等异常值执行的操作。

关于ruby-on-rails - 正则表达式检测字符串中的所有日语字符并将子字符串包装在标签中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21272853/

相关文章:

c - 如何将一个模式与多行相匹配并显示出来?

python - 如何在 python 中获取一个单词后的数字

带有索引/偏移量的 Ruby gsub?

ruby-on-rails - 需要旧密码才能创建新密码

ruby-on-rails - 在不重新启动的情况下调试 Rails 应用程序

ruby - 未声明的实例变量默认为零?

ruby-on-rails - Rails ActiveStorage-通过Rails控制台访问

ruby-on-rails - 在 Rails 中为 http 请求强制使用 SSL

javascript - Rails JavaScript View 在生产环境中不起作用

ruby-on-rails - Ruby on Rails - SoundCloud OAuth 2 未定义方法 `access_token'