[英]replace space before/after certain characters
法語中標點符號前有空格是慣例。
我有這樣的文字:
Paul m'a dit « 卓悅! »
我想要一個 jquery/javascript 函數在以下字符之前用不間斷空格替換常規空格:
! : ? … ; »
在這個字符之后:
«
有人能指出我正確的方向嗎? 先感謝您。
像這樣(編輯:已測試,有效)
function replaceNonBreaking(text) {
return text.replace(/ (!|:|\?|…|;|»)/g, " $1").replace('« ', '« ');
}
將字符串中所有出現的“[空格][特殊字符]”替換為“[不間斷空格][那個特殊字符]”。
可能有比這更好的正則表達式方式(正則表達式是我的失敗),但這個有效:
str = str.replace(/\s([!:\?…;»])/g, function (el1, el2) {
return ' ' + el2;
}).replace(/(«)\s/g, function (el1, el2) {
return el2 + ' ';
});
您可以執行以下操作:
var str = 'Paul m\'a dit : « Bonjour ! »';
var corrected_str = str.replace(/ (!|\:|\?|…|;|»)/g, ' $1', str).replace('« ', '« ');
(我認為您也應該在 « 之前添加一個不間斷空格。)
我的 Typescript 輔助函數帶有窄的不間斷空格代碼( https://en.wikipedia.org/wiki/Non-breaking_space#Width_variation ):
export function replaceNonBreaking(text: string): string {
if (!text) { return text; }
return text.replace(/ (!|:|\?|…|;|»)/g, ' $1').replace('« ', '« ');
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.