Есть ли способ изменить подстроку по индексу в Javascript - PullRequest
0 голосов
/ 29 апреля 2020

В настоящее время я работаю над собственным кодом уценки в javascript и хочу узнать, есть ли способ заменить подстроку в тексте на другую строку, например:

"** случайный текст ** "->" <strong> random text </strong> "

В этом случае что-то подобное my_text.replaceSubString(0,2,"<strong>") должно работать.

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

Ответы [ 2 ]

0 голосов
/ 29 апреля 2020

Это функция, которую вы, вероятно, не должны изобретать, но ... если вы не хотите использовать регулярные выражения, тогда вы можете попробовать такую ​​функцию.

const replaceTokensWithTags = (str, token, tag) => {
    return str.split(token).map((v, index) => {
        return index % 2 ? tag + v + (tag[0] + '/' + tag.slice(1)): v;
    }).join('');
}

replaceTokensWithTags("I am also using **tokens** index to **find** where in the text I need to make a change so I can't use regex", '**', '<b>');

// becomes: "I am also using <b>tokens</b> index to <b>find</b> where in the text I need to make a change so I can't use regex"

replaceTokensWithTags("I am also using [b]tokens[b] index to [b]find[b] where in the [b]text I need[b] to make a change so I can't use regex", '[b]', '<b>');

becomes: "I am also using <b>tokens</b> index to <b>find</b> where in the <b>text I need</b> to make a change so I can't use regex"
0 голосов
/ 29 апреля 2020

Вы можете попробовать что-то подобное. Однако не рекомендуется переопределять класс String. Лучше создать утилиту

String.prototype.mdReplace  = function(tag) { 
  return this.replace(/\*\*(.+?)\*\*/g, `<${tag}>$1</${tag}>`)
}
console.log("** test **".mdReplace("strong"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...