[英]replace symbol in javascript
有誰知道如何將下面的2個符號從字符串替換為代碼?
困難的部分是識別撇號,這將弄亂單引號的數量。
對於雙引號,我認為找到所有雙引號並將左卷曲的奇數替換為右卷曲的偶數是安全的。 除非您的案例帶有嵌套引號。
來源是什么? 英文文字? 碼?
如果要做到萬無一失,要知道用哪種方式(左或右)引號就不容易了。 如果始終保持正確狀態並不重要,則可以使用幾個正則表達式:
function curlyQuotes(inp) {
return inp.replace(/(\b)'/, "$1’")
.replace(/'(\b)/, "‘$1")
.replace(/(\b)"/, "$1”")
.replace(/"(\b)/, "“$1")
}
curlyQuotes("'He said that he was \"busy\"', said O'reilly")
// ‘He said that he was “busy”', said O’reilly
您會看到第二個'更改不正確。
我最近寫了一個叫做jsPrettify的排版排版引擎,可以做到這一點。 這是我使用的算法的僅引號版本( 此處為 ):
prettifyStr = function(text) {
var e = {
lsquo: '\u2018',
rsquo: '\u2019',
ldquo: '\u201c',
rdquo: '\u201d',
};
var subs = [
{pattern: "(^|[\\s\"])'", replace: '$1' + e.lsquo},
{pattern: '(^|[\\s-])"', replace: '$1' + e.ldquo},
{pattern: "'($|[\\s\"])?", replace: e.rsquo + '$1'},
{pattern: '"($|[\\s.,;:?!])', replace: e.rdquo + '$1'}
];
for (var i = 0; i < subs.length; i++) {
var sub = subs[i];
var pattern = new RegExp(sub.pattern, 'g');
text = text.replace(pattern, sub.replace);
};
return text;
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.