重新格式化json数据中的字符

时间:2018-12-06 02:58:53

标签: javascript html css json reddit

我正在从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。有关如何找出图像分辨率的信息,请参见this页。

我该如何实现?

2 个答案:

答案 0 :(得分:1)

我觉得自己很受骗,但是在浏览器中检查OP时,我得到...

<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>`
    // ...
}

答案 1 :(得分:1)

从正则表达式开始,基本上是类固醇上的通配符。 strides在看起来很奇怪的同时会发现/\[.*\]\(.*\)/,其中[*](*)可以是任何长度的字符串。所有可以做的就是找到出现的第一个索引。我试着寻找,但我不是JS的最佳人选。 https://www.w3schools.com/js/js_regexp.asp