Моя цель состоит в том, чтобы превратить любые две последовательные запятые в ",NA,"
. Это означает, что:Заменить слова в строке несколькими сканами
str = ",,,123,,BLAH,,"
изменения",NA,123,NA,BLAH,NA,"
",,,"
изменения в",NA,NA,"
",,,,"
изменения в",NA,NA,NA,"
",blah,,hi,"
изменения в",blah,NA,hi,"
Там может быть где-то между 1 и 100000 запятые в строках с любым количеством символов rs между запятыми. Мой код:
str = str.gsub!(",,",",NA,")
# => ",NA,123,NABLAH,NA"
У меня проблемы, потому что это должно произойти несколько раз. Если я повторяю gsub
несколько раз, я нахожу ошибку undefined method gsub! for nil class
, потому что gsub
возвращает результат, но если нет подстановки, он возвращает nil
.
насчет нечетных чисел запятые, как в первом примере, который имеет три? –
Вы меняете вопрос, а затем, перед лицом нового комментария, требующего уточнения, вы сразу же выбираете ответ ??? Кроме того, выбранный ответ приводит к '' ,, ". Gsub (", "," NA, ") # =>" NA, NA ", что противоречит вашему обновлению вопроса! –
The downvote и голосовать, чтобы закрыть мои, потому что вопрос остается неясным. Для этого есть * prima facie *. Вы сказали, что каждая пара запятых должна быть преобразована в ', NA '. Простейшая возможная строка, которую мы можем применить, - это '' ,, ''(только две запятые), которая должна стать' ', NA,'', но ответ, который вы выбрали, этого не делает. –