写js,将一串文本,转换为html,每一行文字用<span></span>包裹,如果这一行为空,就用<br>代替,如果一行文字中出现了(size:,,例如(size:80%),就提取里面的size:后的80%给span标签,加上 style="font-size:提取出来的80%",并将(size:80%)删除
时间: 2024-03-14 15:45:44 浏览: 131
Div与span的区别-H5超链接和图像与其他标签
好的,可以使用正则表达式来实现这个需求。以下是代码实现:
```javascript
const text = "这是一行文本\n(size:80%)这是另一行文本\n这是第三行文本\n(size:150%)这是第四行文本(size:120%)\n这是第五行文本";
const lines = text.split("\n");
let html = "";
for (let i = 0; i < lines.length; i++) {
const line = lines[i].trim();
if (line.length === 0) {
html += "<br>";
} else {
const regex = /\(size:(\d+)%\)/g;
const matches = regex.exec(line);
let fontSize = null;
let content = line;
if (matches !== null) {
fontSize = matches[1];
content = line.replace(matches[0], "");
}
if (fontSize !== null) {
html += `<span style="font-size:${fontSize}%">${content}</span>`;
} else {
html += `<span>${content}</span>`;
}
}
}
console.log(html);
```
这段代码首先将文本按行分割,然后遍历每一行。如果这一行是空的,就添加一个`<br>`标签,否则就查找这一行是否包含`(size:80%)`这样的字符串。如果有,就提取出80%的值,并将这个字符串从原始文本中删除,然后使用`<span>`标签包裹剩余的文本。如果没有`(size:80%)`这样的字符串,就直接使用`<span>`标签包裹整个文本。最后将每一行的转换结果连接起来,就得到了最终的HTML代码。
阅读全文