переформатировать символы в данных JSON - PullRequest
0 голосов
/ 06 декабря 2018

Я получаю данные из Reddit JSON.и некоторые данные таковы:

The actual resolution of this image is 3067x2276, not 4381x3251. See [this](https://www.reddit.com/r/EarthPorn/wiki/index#wiki_resolution.3F_what_is_that_and_how_can_i_find_it.3F) page for information on how to find out what the resolution of an image is.

Я хочу вставить данные в <p></p> на моей странице, но ссылка такая же, как и выше (не активируется).

Обратите внимание, когдая пытаюсь опубликовать его в stackoverflow, он очень красиво переформатируется в кликабельную ссылку.Как мне это сделать?

переформатировано с помощью stackoverflow:

Фактическое разрешение этого изображения 3067x2276, а не 4381x3251.См. эту страницу для получения информации о том, как узнать, какое разрешение изображения.

Как мне добиться этого?

Ответы [ 2 ]

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

Начните с регулярных выражений, в основном с подстановочных знаков на стероидах./\[.*\]\(.*\)/, выглядя странно, найдет [*](*), где * может быть строкой любой длины.Все, что можно сделать, это найти первый индекс этого появления.Я пытался искать, но я не лучший с JS.https://www.w3schools.com/js/js_regexp.asp

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

Я чувствую, что меня обманули, но, проверяя ОП в моем браузере, я получаю ...

<p>The actual resolution of this image is 3067x2276, not 4381x3251. See <a href="https://www.reddit.com/r/EarthPorn/wiki/index#wiki_resolution.3F_what_is_that_and_how_can_i_find_it.3F" rel="nofollow noreferrer">this</a> page for information on how to find out what the resolution of an image is.</p>

Другими словами, если вы найдете [words](URL), замените его на:

<a href="URL">words</a>

Это маленькое регулярное выражение пытается захватить содержимое [], а затем ().Проверка http может быть недостаточной в зависимости от того, какие ссылки вы ожидаете ...

let regex = /\[(.*?)\]\(([^\)]+)\)/g;
let matches = regex.exec(line);
// matches ought to contains words and a potential url
if (matches.length > 2 && matches[2].startsWith("http://")) {
    // matches[2] is probably a url, so...
    let replace = `<a href="${matches[2]}">${matches[1]}</a>`
    // ...
}
...