Текст между подстрокой и первой точкой - PullRequest
0 голосов
/ 20 декабря 2018

У меня есть текст, и мне нужно заменить какой-то текст в исходном.Так, например:

Оригинальный текст: Квартира продается с приложениями.Дата сделки 01-01-2014 осуществляется в том же районе.ИНМАКУЛАДА, 10.Год постройки: 1974. Внесены поправки на hpi (4%), площадь (-5,00%).Закрытая цена после корректировок: 1 022,07 € / м2.

Мне нужно найти замену между подстрокой «Год постройки:» и следующей точкой (.) После этой подстроки.

Окончательный ожидаемый текст: Квартира продается с приложениями.Дата сделки 01-01-2014 осуществляется в том же районе.ИНМАКУЛАДА, 10.Новый год постройки: 2010. Внесены коррективы для hpi (4%), площади (-5,00%).Закрытая цена после корректировок: 1 022,07 € / м2.

Неправильный окончательный текст Я получаю Я получаю ни последнюю точку (.), Ни следующую, поэтому все между подстрокой ипоследняя точка (.) изменена.Получение этого:

Квартира продается с приложениями.Дата сделки 01-01-2014 осуществляется в том же районе.ИНМАКУЛАДА, 10.Новый год постройки: 2010.

var new_generated_comparable_comment = generate_comparable_comment.replace (/ (Ссылка на катастрофу:). . ([^.] ) /, 'Ссылка на катастрофу:' + значение + '). ');

Спасибо.

Ответы [ 5 ]

0 голосов
/ 20 декабря 2018

Довольно просто, приятель, просто используйте replace с простым регулярным выражением /Construction year:.*?\./!Вы поймаете все от Construction year: до следующей точки, что бы это ни было!

const text = 'Flat sold with annexes. Transaction date 01-01-2014 carried out in same area. INMACULADA, 10 . Construction year: 1974. Adjustments made for hpi (4%), area (-5.00%). Closed price after adjustments: 1,022.07 €/m2.'

function replace(year) {
  return text.replace(/Construction year:.*?\./, 'New construction year: '+year+'.')
}

console.log(replace('2017'));
0 голосов
/ 20 декабря 2018

С помощью replace вы можете сделать это

let str =`Flat sold with annexes. Transaction date 01-01-2014 carried out in same area. INMACULADA, 10 . Construction year: 1974. Adjustments made for hpi (4%), area (-5.00%). Closed price after adjustments: 1,022.07 €/m2.`

let op = str.replace(/(Construction year: )([^.]+)/g,"$1"+"2010" )

console.log(op)
0 голосов
/ 20 декабря 2018

Используемое регулярное выражение (Construction year:).*.([^.]*) захватывает Год постройки: в группе захвата.Тогда .* соответствует любому символу, кроме новой строки 0+ раз, и будет соответствовать до конца строки.После этого он соответствует 1 раз любому символу и 0+ раз не является точкой, поэтому все после Год постройки: останется соответствующим.

Если вы хотите заменить год после Construction year:,Вы можете использовать группу захвата $1, за которой следует заменить совпадение.После группы захвата вы можете не указывать точку [^.]+.

(Construction year: )[^.]+

Демонстрация регулярных выражений

Вы можете добавить глобальный флаг /g в конце регулярных выражений для нескольких совпадений.

const regex = /(Construction year: )[^.]+/;
const str = `Flat sold with annexes. Transaction date 01-01-2014 carried out in same area. INMACULADA, 10 . Construction year: 1974. Adjustments made for hpi (4%), area (-5.00%). Closed price after adjustments: 1,022.07 €/m2.`;
const subst = `$12010`;
const result = str.replace(regex, subst);

console.log(result);
0 голосов
/ 20 декабря 2018

как то так должно работать

     var original = 'Flat sold with annexes. Transaction date 01-01-2014 carried out in same area. INMACULADA, 10 . Construction year: 1974. Adjustments made for hpi (4%), area (-5.00%). Closed price after adjustments: 1,022.07 €/m2.'
     var newYear = 2010
     var updated = original.replace(/Construction year: \d{4}./, `Construction year: ${newYear}`)
     console.log(updated)
0 голосов
/ 20 декабря 2018

Звучит как хорошее время для использования String.replace() с некоторыми Regex.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...