所讨论的字符串类似于:托马斯克·卡萨洪🇪🇹我怎么才能去掉最后一个表情符号/表情符号(不管它叫什么),这样我就可以得到Tomask Kassahun了?当然,也可以是火箭飞船之类的表情。“
xa9qqrwz1#
从Ruby 3.2.0开始,Ruby现在支持专门针对Unicode emojis的\p{Emoji}字符属性。这种支持是在Onigmo 6.2.0中引入的,但在Ruby核心中直到Ruby 3.1.2才被 * 记录在案 *。然而,这包含的行为虽然符合规范,但会意外地从字符串中删除非emoji字符,例如数字。因此,最好使用不幸未记录(截至此时)的字符属性\p{Emoji_Presentation}(简写为\p{EPres})。如果你的Ruby版本和/或引擎支持它,你可以使用下面的例子删除 just 表情符号。
\p{Emoji}
\p{Emoji_Presentation}
\p{EPres}
"Tomask Kassahun 🇪🇹".gsub(/\p{Emoji_Presentation}/, '').strip #=> "Tomask Kassahun"
字符串
"Tomask (mɑ̃ʒe) Kassahun 🇪🇹".gsub(/\p{Emoji_Presentation}/, '').strip #=> "Tomask (mɑ̃ʒe) Kassahun"
型如果您使用的是较旧的Ruby或不支持emoji字符属性的Ruby,那么还有其他属性也可以很好地工作。我在下面描述了它们。
一种可能的方法是使用“Symbol:Ruby的字符属性中的“其他”。举例来说:
"Tomask Kassahun 🇪🇹".gsub(/\p{So}/, '').strip #=> "Tomask Kassahun"
型这甚至适用于包含重音字符的字符串。例如,从another post借用一些非emoji重音字符作为测试用例:
"Tomask (mɑ̃ʒe) Kassahun 🇪🇹".gsub(/\p{So}/, '').strip #=> "Tomask (mɑ̃ʒe) Kassahun"
型
1sbrub3j2#
我认为这是一个使用正则表达式的好例子,我不是正则表达式Maven,但我认为下面的表达式可能是一个很好的起点。
str = "Tomask Kassahun 🇪🇹"
字符串提取传递Element Reference的子字符串,如果提供Regexp,则返回字符串的匹配部分。
str[/^[a-zA-Z]+\s{1}[a-zA-Z]+/] #=> Tomask Kassahun
型字符串匹配方法返回数组
str.match(/^[a-zA-Z]+\s{1}[a-zA-Z]+/) #=> ['Tomask Kassahun']
型你可以通过索引
str.match(/^[a-zA-Z]+\s{1}[a-zA-Z]+/)[0] #=> Tomask Kassahun
型查看https://ruby-doc.org/core-2.7.2/String.html#method-i-5B-5D
2条答案
按热度按时间xa9qqrwz1#
Ruby 3.2.0更新:Unicode Emoji字符属性
从Ruby 3.2.0开始,Ruby现在支持专门针对Unicode emojis的
\p{Emoji}
字符属性。这种支持是在Onigmo 6.2.0中引入的,但在Ruby核心中直到Ruby 3.1.2才被 * 记录在案 *。然而,这包含的行为虽然符合规范,但会意外地从字符串中删除非emoji字符,例如数字。因此,最好使用不幸未记录(截至此时)的字符属性\p{Emoji_Presentation}
(简写为\p{EPres}
)。如果你的Ruby版本和/或引擎支持它,你可以使用下面的例子删除 just 表情符号。示例1:删除表情符号后留下的空白
字符串
示例二:删除演示而不影响其他Unicode集
型
如果您使用的是较旧的Ruby或不支持emoji字符属性的Ruby,那么还有其他属性也可以很好地工作。我在下面描述了它们。
根据其他字符属性删除表情
一种可能的方法是使用“Symbol:Ruby的字符属性中的“其他”。举例来说:
型
这甚至适用于包含重音字符的字符串。例如,从another post借用一些非emoji重音字符作为测试用例:
型
1sbrub3j2#
我认为这是一个使用正则表达式的好例子,我不是正则表达式Maven,但我认为下面的表达式可能是一个很好的起点。
字符串
提取传递Element Reference的子字符串,如果提供Regexp,则返回字符串的匹配部分。
型
字符串匹配方法返回数组
型
你可以通过索引
型
查看https://ruby-doc.org/core-2.7.2/String.html#method-i-5B-5D