javascript - Javascript动态格式化带有项目符号的项目列表
问题描述
用例
API 返回一个类似于The ingredients are * apple* carrot *potato
. 请注意,项目符号之间的间距通常不会保持一致。
在我填充长字符串的元素中,我只会得到一个简短的标题和一个列表。所以我希望列表(字符串的部分将以 a 开头*
)首先用 a 包装,<ul>
然后让每个项目都用<li>
.
示例字符串
This is a list of sodas * Dr. Pepper *LaCroix * 7up *sprite * Fanta * Coke Zero *Pepsi
应该执行的步骤
- 包裹
* Dr. Pepper *LaCroix * 7up *sprite * Fanta * Coke Zero *Pepsi
在一个<ul>
- 将单个项目包装在一个
<li>
- 抓住项目符号点
*
和它与任何字符之间的间距并将其删除。
所需的内部 HTML 输出
This is a list of sodas
<ul>
<li>Dr. Pepper</li>
<li>LaCroix</li>
<li>7up</li>
<li>sprite</li>
<li>Fanta</li>
<li>Coke Zero</li>
<li>Pepsi</li>
</ul>
演示
CodePen上的当前演示
解决方案
var str = "This is a list of sodas * Dr. Pepper *LaCroix * 7up *sprite * Fanta * Coke Zero *Pepsi";
//split string into an array using * as delimiter
var items = str.split('*');
//grab the first item since it's the title, not a soda
var title = items.shift();
//create an html string var
var html = `${title}<ul>`
//loop over remaining array elements and append to our html
items.forEach((el) => {
html += `<li>${el.trim()}</li>`;
});
html += '</ul>';
//display as HTML
document.getElementById('target').innerHTML = html;
<div id="target"></div>
推荐阅读
- python - 如何有效地读取巨大 tiff 图像的一部分?
- javascript - react native 中的全局 onChange 处理程序
- matlab - 用加号填充行之间
- javascript - React-Router 在浏览器中显示组件两次
- android - 如何在 Android 中使用 Regex、SpannableString 更改特定文本的颜色
- python - 如何在 Python 中转换指数并去掉“e+”?
- c - 可编程中断控制器:PIC1 和 PIC2 在实模式下不返回零
- javascript - 在firebase中分页时如何检测第一页或最后一页中的am
- python - argparse:在一个破折号中有多个标志的 nargs?
- linux - 执行和获取 bash 文件的所有选项有哪些?为什么不检查shebang?