首页 > 解决方案 > 如何拆分作为编号列表的字符串

问题描述

我有一个这样的字符串

20. Kyoto, Japan19. Rijeka, Croatia18. Panama17. Rabat, Morocco16. The British Virgin Islands15. Frisian Islands, Denmark14. Qingdao, China13. Lebanon12. Portland, Maine, US11. Dakar, Senegal10. Egadi Islands, Sicily9. Paris, France8. Siargao, Philippines7. Galway, Ireland6. Kangaroo Island, Australia5. Salvador, Brazil4. Armenia3. Kyrgyzstan2. Plymouth, UK1. Pakistan19. THE TURKISH RIVIERA18. PERTH, WESTERN AUSTRALIA17. SINGAPORE16. THE SCOTTISH HIGHLANDS15. St Barth’s,Caribbean14. Mozambique13. Mumbai12. The Peloponnese, Greece11. Tahiti10. Namibia9. Patagonia8. Arles, France7. Chengdu, China6. Egypt5. Transylvania, Romania4. TASMANIA, AUSTRALIA3. New Orleans2. Valle de Guadalupe1. Matera, Italy

我将如何按列表编号拆分它?可以这样做保留数字还是我最好稍后添加数字?

标签: regexrubysplit

解决方案


如果您确信除了项目编号之外没有数字,这很容易。String#scan对于数字→ <em>点 →空格→ <em>不是数字。

str.scan(/(\d+)\.\s+(\D+)/)
#⇒ [["20", "Kyoto, Japan"],
#   ["19", "Rijeka, Croatia"],
#   ["18", "Panama"],
#   ["17", "Rabat, Morocco"]
#   ....]

推荐阅读