Добавить новые строки перед выбранными символами дефиса

У меня в тексте есть такая закономерность:

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);

Можете ли вы описать требования? На данный момент похоже, что код решает проблему ввода примера.

jabaa 03.09.2024 09:35
string = string.replaceAll(/(-[0-9]+)/g, '\n$1'); ...?
C3roe 03.09.2024 09:38
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
2
52
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вы могли бы попробовать

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.

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

Hao Wu 03.09.2024 09:44

@HaoWu хорошая идея. Почему бы не восстановить свой ответ?

mplungjan 03.09.2024 09:47

@mplungjan Я не был уверен, что это желаемый ответ ОП, поскольку их код немного сбивает с толку.

Hao Wu 03.09.2024 09:49

Я согласен, что перемещение - внутрь просмотра — еще одно работающее решение, но мне немного сложнее следить за тем, что происходит. Я предполагаю, что среднестатистическому программисту, пытающемуся прочитать этот код, мою версию будет легче понять. В моем выражении ясно, что я ищу дефис, за которым следует цифра, и заменяю его переводом строки, за которым следует дефис. В любом случае, это имеет смысл для моего образа мышления.

Brett Donald 03.09.2024 09:54

Другие вопросы по теме