如何將字符串從字符分割字符串
str = "20050451100_9253629709-2-2"
I need the output
["20110504151100_9253629709-2", "2"]
如何將字符串從字符分割字符串
str = "20050451100_9253629709-2-2"
I need the output
["20110504151100_9253629709-2", "2"]
你可以使用正則表達式匹配:
str = "20050451100_9253629709-2-2"
m = str.match /(.+)-(\d+)/
[m[1], m[2]] # => ["20050451100_9253629709-2", "2"]
將R中文表達式匹配「任何」,後面跟着一個破折號,後面跟着數字。
謝謝@hallidave。我認爲,這在性能方面是最好的。 – 2011-05-11 13:32:31
這個答案是相當古老的,但有人可以描述或鏈接字符串匹配的語法? – 2015-10-31 16:01:31
第二次出現分裂。如果你總是有兩個連字符,你可以得到-
的最後一個索引:
str = "20050451100_9253629709-2-2"
last_index = str.rindex('-')
# initialize the array to hold the two strings
arr = []
# get the string characters from the beginning up to the hyphen
arr[0] = str[0..last_index]
# get the string characters after the hyphen to the end of the string
arr[1] = str[last_index+1..str.length]
"20050451100_9253629709-2-2"[/^([^-]*\-[^-]*)\-(.*)$/]
[$1, $2] # => ["20050451100_9253629709-2", "2"]
這將匹配任何字符串,將其拆分第二次出現-
。
+1這一個實際使用第二次出現,而不是最後一次。你可以這樣更簡潔:'str.match(/^([^-]*\-[^-]*)\-(.*)$/)。to_a [1 ..- 1]' – Kelvin 2011-07-26 17:23:10
你可以分開拆分並重新聯合起來回:
str = "20050451100_9253629709-2-2"
a = str.split('-')
[a[0..1].join('-'), a[2..-1].join('-')]
有沒有像一個一行:)
str.reverse.split('-', 2).collect(&:reverse).reverse
這將扭轉串,由分裂「 - 」一次,因此返回2個元素(在第一個' - '前面的東西以及它後面的所有東西),然後反轉這兩個元素,然後是數組本身。
編輯
*before, after = str.split('-')
puts [before.join('-'), after]
根據您接受的答案,好像你是願意接受分裂最終連字符,而不是嚴格的第二位。你應該確保在你的數據中,第二個總是最後的。 – Kelvin 2011-07-26 17:17:00