久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

javascript - HTML字符串排版

瀏覽:81日期:2022-12-06 16:06:51

問(wèn)題描述

我現(xiàn)在有HTML代碼的字符串,想要對(duì)字符串進(jìn)行排版,有沒(méi)有什么可用的方法?

需要一款js插件,或者方法,能在項(xiàng)目里面轉(zhuǎn)換用的。

比如原字符串是:

<p><p>This is a p</p><p>This is another p</p></p>

添加空格和換行,變成新的字符串:

<p> <p>This is a p</p> <p>This is another p</p></p>

問(wèn)題解答

回答1:

第一種方案想用正則做答沒(méi)成功,沒(méi)有成功。整理了下思路,已經(jīng)完美解決(自認(rèn)為完美)。

function codeFormat(code, indent, tmpIndent){ var indent = indent || ’ ’; var tmpIndent = tmpIndent || ’n’; var preg = /<(S*)([^>]*)>([sS]*?)</1>/ig; return code.replace(preg, function($0, $1, $2, $3){return tmpIndent + ’<’ + $1 + $2 + ’>’ + codeFormat($3, indent, tmpIndent + indent) + ( $3.trim().substr(0,1) == ’<’ ? tmpIndent : ’’) + ’</’ + $1 + ’>’; });}codeFormat('<p><p>This is a p</p><p>This is anothers p</p></p><p><p>This is a p</p><p>This is another p</p></p>');/*<p> <p>This is a p</p> <p>This is anothers p</p></p><p> <p>This is a p</p> <p>This is another p</p></p>*/codeFormat(’<html><head><title></title></head><body class='haha'><p style='background:#C00;'><p>This is a p</p><p>This is another p</p></p></body></html>’, ’----’);/*<html>----<head>--------<title></title>----</head>----<body class='haha'>--------<p style='background:#C00;'>------------<p>This is a p</p>------------<p>This is another p</p>--------</p>----</body></html>*/

以下是循環(huán)的老答案:

/* 感覺(jué)沒(méi)什么難度,一個(gè)循環(huán) 遇見(jiàn) >后跟<,換行 遇見(jiàn) < 縮進(jìn) 遇見(jiàn) </ 取消縮進(jìn)*/function codeFormat(code, indent){ var indent = indent || ' '; //縮進(jìn)字符 var tmpIndent = ''; //保存代碼字符串 var result = '', key = '', keyNext = ''; for( var i = 0 ; i < code.length ; i++ ){key = code[i];keyNext = i < code.length-1 ? code[i+1] : '';if(key == '<'){ if( keyNext == '/' ){tmpIndent = tmpIndent.substr(indent.length); } if( result[result.length-1] == 'n' ){result += tmpIndent; } if( keyNext != '/' ){tmpIndent += indent; }}result += key;if(key == '>' && keyNext == '<' ){ result += 'n';} } return result;}codeFormat('<p><p>This is a p</p><p>This is another p</p></p>');/*<p> <p>This is a p</p> <p>This is another p</p></p>*/codeFormat(’<html><head><title></title></head><body class='haha'><p style='background:#C00;'><p>This is a p</p><p>This is another p</p></p></body></html>’, ’ ’);/*<html> <head><title></title> </head> <body class='haha'><p style='background:#C00;'> <p>This is a p</p> <p>This is another p</p></p> </body></html>*/回答2:

為什么我這個(gè)問(wèn)題一直被踩?還是一個(gè)不錯(cuò)的問(wèn)題的嘛。。。。@mqycn , @zhenguoli

這是朋友@candy寫的一個(gè)方案:

import _ from ’lodash’;const splitOnTags = str => str.split(/(</?[^>]+>)/g).filter(line=>line.trim()!='');const isTag = str => /<[^>!]+>/.test(str);const isClosingTag = str => /</[^>]+>/.test(str);const isSelfClosingTag = str => /<[^>]+/>/.test(str);const isOpeningTag = str => isTag(str) && !isClosingTag(str) && !isSelfClosingTag(str);export default (str, indent) => { let depth = 0; indent = indent || ’ ’; return splitOnTags(str).map(item=>{ if(isClosingTag(item)) { depth--; } const line = _.repeat(indent, depth) + item; if(isOpeningTag(item)) { depth++; } return line; }).join(’n’);}回答3:

http://tool.oschina.net/codef... 在線的。其他的編輯器里面有beautify

javascript - HTML字符串排版

回答4:

對(duì)開發(fā)工具而言,你可以嘗試 VSCode 編輯器。

https://code.visualstudio.com/

安裝完成后,按 shift-ctrl-x 打開插件列表,搜索 Beautify 并安裝,即可實(shí)現(xiàn) HTML 代碼美化。相應(yīng)設(shè)置參考這里:

https://marketplace.visualstu...

在代碼中進(jìn)行格式轉(zhuǎn)換可以使用 HTML String Parser,例如

https://www.npmjs.com/package...

或者使用 cheerio 解析 DOM 文本后重新輸出亦可。

3.(重新制作一個(gè) HTML Parser 并不困難,參考我的專欄http://ewind.us/2016/toy-html...

標(biāo)簽: JavaScript
相關(guān)文章:
主站蜘蛛池模板: 欧美理论片在线观看 | 成年人看的羞羞网站 | 日韩中文字幕无码一区二区三区 | 成年免费观看 | 国产日韩欧美精品一区二区三区 | 国产精品久久久久久久久免费丝袜 | 日韩欧美在线视频播放 | 日韩av免费在线播放 | 国产精品高清在线 | 91免费在线 | 亚洲国产精品麻豆 | 国产在线看h | 人人鲁人人莫一区二区三区 | 久久免费视频在线 | 在线播放黄色片网站 | 91一区 | 成人精品在线观看 | 亚洲精品午夜国产va久久成人 | 欧美精品a∨在线观看不卡 欧美日韩中文字幕在线播放 | 国产精品免费在线 | 亚洲精品福利网站 | 久草视频在线播放 | 欧美啊v | 国产精品69毛片高清亚洲 | 国产伦精品久久久一区二区三区 | 免费欧美 | 亚洲精品福利在线观看 | 欧美日韩第一 | 伊人成人222 | 国产欧美综合视频 | 欧美日韩国产精品一区二区 | 国产三区在线视频 | 亚洲人成中文字幕在线观看 | 黄网站涩免费蜜桃网站 | 成人精品免费视频 | www.日韩视频 | 亚洲一区二区三区久久久 | 成人高清 | 日韩欧美一级精品久久 | 成人免费淫片aa视频免费 | 777色狠狠一区二区三区 |