У меня в тексте есть такая закономерность:
PSA-изображение отчета о
-15.12.1402 (05.03.2024): 0,15 нг/мл
-19.04.1403 (09.07.2024): 0,36нг/мл.
И у меня есть приведенный выше текст в виде одной строки:
let string = `PSA-report on -15.12.1402 (05.03.2024): 0.15 ng/ml -19.04.1403 (09.07.2024): 0.36ng/ml.`
Я хочу преобразовать string
из однострочного формата в формат, который вы видите в шаблоне. Я хочу вставить новую строку перед каждым дефисом, сразу за которым стоит число.
Я попробовал этот код...
string = string.replaceAll('-', '\n-');
... но перед каждым дефисом добавляется новая строка. Как мне сопоставить только те, за которыми непосредственно следует число?
let string = `PSA-report on -15.12.1402 (05.03.2024): 0.15 ng/ml -19.04.1403 (09.07.2024): 0.36ng/ml.`
string = string.replaceAll('-', '\n-');
console.info(string);
string = string.replaceAll(/(-[0-9]+)/g, '\n$1');
...?
Вы могли бы попробовать
string.replace(/(?=-\d)/g, '\n')
let string = `PSA-report on -15.12.1402 (05.03.2024): 0.15 ng/ml -19.04.1403 (09.07.2024): 0.36ng/ml.`
const formatted = string.replace(/(?=-\d)/g, '\n');
console.info(formatted);
Используйте положительный просмотр вперед, чтобы обнаружить наличие цифры после дефиса.
let string = `PSA-report on -15.12.1402 (05.03.2024): 0.15 ng/ml -19.04.1403 (09.07.2024): 0.36ng/ml.`
string = string.replaceAll(/-(?=\d)/g, '\n-');
console.info(string);
Дополнительную информацию можно найти по адресу regex101.
Вы можете переместить -
внутри просмотра и удалить -
из замены, чтобы сохранить его в чистоте.
@HaoWu хорошая идея. Почему бы не восстановить свой ответ?
@mplungjan Я не был уверен, что это желаемый ответ ОП, поскольку их код немного сбивает с толку.
Я согласен, что перемещение -
внутрь просмотра — еще одно работающее решение, но мне немного сложнее следить за тем, что происходит. Я предполагаю, что среднестатистическому программисту, пытающемуся прочитать этот код, мою версию будет легче понять. В моем выражении ясно, что я ищу дефис, за которым следует цифра, и заменяю его переводом строки, за которым следует дефис. В любом случае, это имеет смысл для моего образа мышления.
Можете ли вы описать требования? На данный момент похоже, что код решает проблему ввода примера.