gpt4 book ai didi

ruby - 如何拆分角色并保持值(value)

转载 作者:太空宇宙 更新时间:2023-11-03 17:06:26 25 4
gpt4 key购买 nike

我有一个字符串:

“N8383”

我想对角色进行拆分并维护它以获得:

["N", "8383"]

我尝试了以下方法:

"N8383".split(/[A-Z]/)

这给了我:

["", "8383"]

我想匹配更多示例字符串,例如:

N344 344N S555 555S

最佳答案

String#split 不适合解决此问题,原因与其他人所述相同。我会这样处理它,使用 String#scan相反:

str_parts = "N8383".scan(/[[:alpha:]]+/)
num_parts = "N8383".scan(/[[:digit:]]+/)

如果字符串包含多个字符串部分和/或多个数字部分,这将为您提供一些有用的东西。

这个表达式:

%w[N344 344N S555 555S].map do |str|
next str.scan(/[[:alpha:]]+/), str.scan(/[[:digit:]]+/)
end

将返回:

[
[["N"], ["344"]],
[["N"], ["344"]],
[["S"], ["555"]],
[["S"], ["555"]]
]

虽然您要扫描每个字符串两次,但我认为这是比 1. 尝试提出一个复杂的正则表达式来回溯以正确的顺序返回部分,或 2. 重新处理结果以将部分放入正确的顺序。特别是如果字符串与您提供的示例中的字符串一样短。话虽这么说,如果扫描每个字符串两次真的让您感到恼火,这里有另一种方法:

str_parts, num_parts = str.scan(/([[:alpha:]]+)|([[:digit:]]+)/).transpose.each(&:compact!)

关于ruby - 如何拆分角色并保持值(value),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50454558/

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