2016-08-22 104 views
-3

我有一个像下方的字符串模式,获取字符串数组从纯字符串红宝石

=> "text1 http://www.domain.com/experiment_B_setup_diagram_image.png\n\nExperiments text2 http://www.domain.com/experiment_C_setup_diagram_image.png \nexperiment text3 http://www.domain.com/experiment_A_plotted_cha 
rt.png" 

我想通过一个等时,输出应该是具有单独的URL,然后串之一,

> ["text1", 
> "http://www.domain.com/experiment_B_setup_diagram_image.png", 
> "\n\nExperiments", "text2", 
> "http://www.domain.com/experiment_C_setup_diagram_image.png", 
> "\nexperiment", "text3",........] 

像单独的网址和它的前或后续字符串作为数组...有人能帮我吗?

+1

你尝试过什么吗? –

+0

不知道...我不好在RE – Amit

+3

你应该尝试一下,StackOverflow它不是_write-code-for-me_服务。 –

回答

1

只要你有滴的换行(\ n)的OK,你可以把它们先简单地劈在空间转换为空间:

x = "text1 http://www.domain.com/experiment_B_setup_diagram_image.png\n\nExperiments text2 http://www.domain.com/experiment_C_setup_diagram_image.png \nexperiment text3 http://www.domain.com/experiment_A_plotted_chart.png" 
x.tr("\n", " ").split(" ") 
+1

这是一个很长的路要走。相反,使用带有split的正则表达式来处理空格和换行符。 –

+0

OP提到他们不擅长正则表达式,所以这是作为替代方案提出的。正则表达式当然是次要的,但对于这个问题并不是完全必要的。 –

2

尝试使用:

.split(/\s|\n+/) 

例如:

text="text1 http://www.domain.com/experiment_B_setup_diagram_image.png\n\nExperiments text2 http://www.domain.com/experiment_C_setup_diagram_image.png \nexperiment text3 http://www.domain.com/experiment_A_plotted_chart.png" 
text.split(/\s|\n/) 

将返回:

["text1", "http://www.domain.com/experiment_B_setup_diagram_image.png", "", "Experiments", "text2", "http://www.domain.com/experiment_C_setup_diagram_image.png", "", "experiment", "text3", "http://www.domain.com/experiment_A_plotted_chart.png"] 
+1

使用'\ s +'就足够了,因为它已经在其字符集中包含了'\ n'。在http://ruby-doc.org/core-2.3.1/Regexp.html#class-Regexp-label-Character+Classes –

+1

看看它的定义。另外,'\ s | \ n +'可能不会做你认为是。有关说明,请参阅https://www.regex101.com/r/wF8xU6/1。 –