Как работать с несколькими новыми строками, пока в javascript не будет достигнута пустая строка? - PullRequest
1 голос
/ 12 января 2020

Давайте рассмотрим!

const str = `
    Get between @
          Yes me.

    Get between @
          Me, Me.
          Yes.

`

Функция с именем parse () может сделать что-то вроде этого:

console.log( parse( str ) )

Вывод:

Get between this.
Get between this.

Итак, вы можете быть смущены, что я говорю? Итак, я очищаю это. Вы можете видеть, что parse () заменил содержимое между @ и пустой строкой на this. . Итак, как я могу сделать функцию. Вот моя попытка:

const str = `
    Get between @
          Yes me.

    Get between @
          Me, Me.
          Yes.

`;

const parse = (val) => {
    val = val.replace(
    /\b@\b([\S\s]*?)\n/gm, "this." 
     )
    return val
};

console.log(parse(str));

Но это не работает, как я хотел. Я знаю, что поставил \n в последнем, что подхватит самую первую новую строку, но я не понимаю, как обращаться с несколькими новыми строками, после которых лежит пустая строка. Так ты можешь помочь мне улучшить мою функцию?

Ответы [ 2 ]

0 голосов
/ 12 января 2020

Вы также можете сопоставить строку перед @, а затем заменить @ на this и \n

const str = `
    Get between @
          Yes me.

    Get between @
          Me, Me.
          Yes.

`
const parse = (val) => {
    val = val.match(
     /\w.*@/g).join().replace(/(@,)|@/g, 'this.\n')
    return val
}

console.log(parse(str))
0 голосов
/ 12 января 2020

Не уверен, что это может сработать для вас, но я хотел бы рассмотреть возможность получения только строк, заканчивающихся на @, и затем повторять совпадения с заменой:

const str = `
    Get between @
          Yes me.

    Get some @
          Me, Me.
          Yes.

`;

const parse = str => str.match(/(?!\s+).+@/g).map(m => m.replace('@', 'this.')).join('\n');

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