Несколько экземпляров \ n игнорируются в Showdown - PullRequest
0 голосов
/ 27 августа 2018

Может кто-нибудь помочь мне с проблемой ниже?

По сути, у меня есть JSON, где текст имеет \n для разрыва строки.Затем мне нужно проанализировать это как уценку и преобразовать его в HTML.Единственная проблема в том, что все парсеры, которые я пробовал, игнорируют несколько \n экземпляров.Чтобы исправить это, я придумал идею, приведенную ниже, но, как вы можете видеть, она на самом деле не очень приспособлена и очень неуклюжа.

var converter = new showdown.Converter(),
description = data.description.replace(/\n\n/g, "\n<br/>\n<br/>");
description = data.description.replace(/\n\n\n/g, "\n<br/>\n<br/>\n<br/>");
description = data.description.replace(/\n\n\n\n/g, "\n<br/>\n<br/>\n<br/>\n<br/>");
var html = converter.makeHtml(description);

Есть ли способ сделать так, чтобы еслив строке более одного \n, к каждому из которых добавляется <br/> \n?

Спасибо: D

РЕДАКТИРОВАТЬ: JSON ниже:

{
    "description": "**A glitchy apple respring animation for Anemone.**\n\n\nOriginally requested by u/Cyko__, u/Momoske (Osctardo) decided to make a \"Smoke Ball\" animation for all devices with the 7 different resolutions:\n\n- 1136x640 (iPhone 5s)\n- 1334x750 (iPhone 6/7/8)\n- 1472x828 (iPhone 6/7/8 upscaled)\n- 1920x1080 (iPhone 6+/7+/8+)\n- 2208x1242 (iPhone 6+/7+/8+ upscaled)\n- 2436x1125 (iPhone X)\n- 2688x1242 (iPhone X upscaled)\n\n\nIn the comments of the [UPCOMING] post on r/jailbreak, 2 other people (u/MatRanc and u/R3IZ4) requested for:\n\n- An *\"Apple Glitch\"* respring animation\n- A *\"Verbose\"* respring animation, which was both reworked and updated to look great on all these devices and resolutions\n\n\nThis is the *\"Apple Glitch\"* respring animation, with a black version included for those of you with an OLED device (made by myself)!"
}

РЕДАКТИРОВАТЬ 2: Вот jsfiddle, чтобы вы могли видеть, что происходит.Просто удалите из него .replace(), и вы увидите, каким должен быть HTML без <br/> s: https://jsfiddle.net/jacobcxdev/t7hj5mx0/.

Ответы [ 2 ]

0 голосов
/ 27 августа 2018

Мне удалось найти решение!

var converter = new showdown.Converter(),
  description = data.description.replace(/\n{2,}/g, m => m.replace(/\n/g, "<br/>"));
description = description.replace(/<br\/>([^<])/g, "<br\/>\n\n$1");
var html = converter.makeHtml(description);

Кредит Слай за первую замену!

0 голосов
/ 27 августа 2018

Конечно, вам нужно только заменить каждый \ n на \ n:

description = data.description.replace(/\n/g, "\n<br/>");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...