Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 抑制Ruby'中的分隔符;s字符串#拆分_Ruby On Rails_Ruby_Regex_String_Split - Fatal编程技术网

Ruby on rails 抑制Ruby'中的分隔符;s字符串#拆分

Ruby on rails 抑制Ruby'中的分隔符;s字符串#拆分,ruby-on-rails,ruby,regex,string,split,Ruby On Rails,Ruby,Regex,String,Split,我正在使用rails将旧电子表格中的数据导入数据库 我有一列,每行包含一个列表,有时格式为 first, second 还有其他类似的时候 third and fourth 所以我想把这个字符串分割成一个数组,用逗号或“and”来分隔。我试过了 my_string.split /\s?(\,|and)\s?/ 不幸的是,正如文件所说: 如果模式包含组,那么相应的匹配项也将在数组中返回 这意味着我得到了一个数组 [ [0] "first" [1] ", " [2] "second" ] 显

我正在使用rails将旧电子表格中的数据导入数据库

我有一列,每行包含一个列表,有时格式为

first, second
还有其他类似的时候

third and fourth
所以我想把这个字符串分割成一个数组,用逗号或“and”来分隔。我试过了

my_string.split /\s?(\,|and)\s?/
不幸的是,正如文件所说:

如果模式包含组,那么相应的匹配项也将在数组中返回

这意味着我得到了一个数组

[
[0] "first"
[1] ", "
[2] "second"
]

显然,只有第0和第2个元素对我有用。您推荐什么作为实现我尝试的最简洁的方法?

您可以使用
?:
指示regexp不要捕获组

my_string.split(/\s?(?:\,|and)\s?/)
# => ["first", "second"] 
作为旁注

使用rails将其导入数据库


请注意,这与Rails无关,这是Ruby。

您可以使用
?:
指示regexp不要捕获组

my_string.split(/\s?(?:\,|and)\s?/)
# => ["first", "second"] 
作为旁注

使用rails将其导入数据库


请注意,这与Rails无关,这是Ruby。

您可以使用
?:
指示regexp不要捕获组

my_string.split(/\s?(?:\,|and)\s?/)
# => ["first", "second"] 
作为旁注

使用rails将其导入数据库


请注意,这与Rails无关,这是Ruby。

您可以使用
?:
指示regexp不要捕获组

my_string.split(/\s?(?:\,|and)\s?/)
# => ["first", "second"] 
作为旁注

使用rails将其导入数据库



请注意,这与Rails无关,这是Ruby。

使用
(?:…)
进行分组而不捕获。您也可以删除有问题的分隔符
mystring.gsub(/(,|和)/,'')。拆分
@ptd则无法区分分隔项之间的差异。为什么不将and替换为逗号分隔符,然后运行拆分?请注意,您的代码将
随机
拆分为
r
om
。使用
(?:…)
进行分组而不捕获。您也可以删除有问题的分隔符
mystring.gsub(/(,|和)/,“”).split
@ptd则无法区分分隔项之间的差异。为什么不将and替换为逗号分隔符,然后运行拆分?请注意,您的代码将
随机
拆分为
r
om
。使用
(?:…)
进行分组而不捕获。您也可以删除有问题的分隔符
mystring.gsub(/(,|和)/,“”).split
@ptd则无法区分分隔项之间的差异。为什么不将and替换为逗号分隔符,然后运行拆分?请注意,您的代码将
随机
拆分为
r
om
。使用
(?:…)
进行分组而不捕获。您也可以删除有问题的分隔符
mystring.gsub(/(,|和)/,“”).split
@ptd则无法区分分隔项之间的差异。为什么不用and代替逗号分隔符,然后运行拆分?请注意,您的代码会将
随机
拆分为
r
以及
om
。我很高兴您提供了一个只使用Ruby的解决方案,但我提到了Rails,因为Rails只有一个是可以接受的。首先匹配
会有什么问题,second'.scan(/^[^,\s]+|\s+$/)
?@AvinashRaj用户提到字符串有时包含逗号,有时包含和。@SimoneCarletti这两种情况都适用。只有当字符串采用上述格式时,它才有效。@Dan,“因为Rails只有一个是可以接受的。”当你谈论Ruby和Rails时,没有“Rails只有一个”这样的说法。Rails是Ruby代码,所以不能将其与Ruby分开。现在,可以将Ruby与Rails分开了。我很高兴你提供了一个只支持Ruby的解决方案,但我提到Rails是因为只有一个Rails是可以接受的。匹配
“第一,第二”有什么问题吗?scan(/^[^,s]+\s+$/)
?@AvinashRaj用户提到字符串有时包含逗号,其他时间和@SimoneCarletti它对两者都有效。只有当字符串采用上述格式时,它才有效。@Dan,“因为Rails只有一个是可以接受的。”当你谈论Ruby和Rails时,没有“Rails只有一个”这样的说法。Rails是Ruby代码,所以不能将其与Ruby分开。现在,可以将Ruby与Rails分开了。我很高兴你提供了一个只支持Ruby的解决方案,但我提到Rails是因为只有一个Rails是可以接受的。匹配
“第一,第二”有什么问题吗?scan(/^[^,s]+\s+$/)
?@AvinashRaj用户提到字符串有时包含逗号,其他时间和@SimoneCarletti它对两者都有效。只有当字符串采用上述格式时,它才有效。@Dan,“因为Rails只有一个是可以接受的。”当你谈论Ruby和Rails时,没有“Rails只有一个”这样的说法。Rails是Ruby代码,所以不能将其与Ruby分开。现在,可以将Ruby与Rails分开了。我很高兴你提供了一个只支持Ruby的解决方案,但我提到Rails是因为只有一个Rails是可以接受的。匹配
“第一,第二”有什么问题吗?scan(/^[^,s]+\s+$/)
?@AvinashRaj用户提到字符串有时包含逗号,其他时间和@SimoneCarletti它对两者都有效。只有当字符串采用上述格式时,它才有效。@Dan,“因为Rails只有一个是可以接受的。”当你谈论Ruby和Rails时,没有“Rails只有一个”这样的说法。Rails是Ruby代码,所以不能将其与Ruby分开。现在,可以将Ruby与Rails分开了。