Если вы можете полагаться на положение значений, подлежащих замене в начале строки, как в вашем примере, вы можете использовать регулярное выражение, например ^ +([a-zA-Z0-9_]*):
, которое соответствует только последовательностям буквенно-цифровых символов и подчеркиваний переддвоеточие и предшествует ноль или более пробелов и захватывает последовательность в качестве первой группы.
Вы можете увидеть, используя онлайновый валидатор регулярных выражений , что сопоставляется / захватывается, а что нет для вводапример, который вы показали.
Затем вы можете использовать захваченную группу, чтобы обернуть интересующий вас текст в двойные кавычки.
Простой пример запуска в JS:
var input = `{
example:"hi there",
dateTime: "01/01/1970 bla:bla"
}`
var regexp = /^[ \t]+([a-zA-Z0-9_]*):/mg
var replaced = input.replace(regexp, '"$1":')
console.log(replaced)
ОБЪЯСНЕНИЕ: m
флаг включает многострочный совпадение, g
флаг включает совпадение всех режим
Я не могу показать вам пример Ruby, но предоставленное регулярное выражение должно помочь вам!