簡體   English   中英

替換某些字符之前/之后的空格

[英]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('« ', '«&nbsp');

(我認為您也應該在 « 之前添加一個不間斷空格。)

我的 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM