2017-02-20 57 views
0

啞引用是那些直接顯示的引號。智能報價捲曲,他們在正確的方向捲曲。我相信規則如下:正則表達式拼圖:如何用智能拼圖代替啞引號

  • 如果報價是在一個詞的開頭,它會捲曲正確。
  • 如果報價是由其他報價或分組符號進行一個單詞的開始({[它的捲髮權利。
  • 如果報價是其他任何地方它的捲髮離開。

我需要一些腳本採用可變拿着一個字符串,並用正確冰壺替換原有的所有直引號。

This有相關的資源,爲不同的字符代碼。

var replacedText = text.replace(/"(?=[a-zA-Z])/gi,"\u201C"); 
var replacedText = replacedText.replace(/'(?=[a-zA-Z])/gi,"\u2018"); 

例如,上面的工作在語法方面,我想象一個結構良好的一系列替代品可以工作。但我正在努力爭取正確的邏輯。由於我想替換單引號和雙引號,因此我想智能地替換它們,使它們在正確的方向上「打開」和「關閉」。

+0

如果您願意,可以使用它們所需的輸出示例! –

+0

它很難給出一個例子,因爲SO將所有的引號轉換爲啞引號。但是這個問題的目標應該清楚。 – COMisHARD

+0

什麼是「愚蠢的引號」和「聰明的引號」? –

回答

2

也許這是一個起點?我在這裏所做的基本上只是在第一個引號之前假設一個空格,或者如果引號位於字符串的開頭,則是「quote」消息的開頭。然後我繼續前進,直到有一個結束引號。再一次,只是一個開始。不知道這是否有資格你所提到的事情:

var sample = 'One guy walks into a bar and says, "Dude, whaddup?".'; 

sample.replace(/(\s|^)\"([^\"]+)\"/g, "$1\u201C$2\u201D") 
// should return: One guy walks into a bar and says, 「Dude, whaddup?」. 

var sample2 = '"E=mc2" is Eistein\'s signature'; 

sample2.replace(/(\s|^)\"([^\"]+)\"/g, "$1\u201C$2\u201D") 
// should return: 「E=mc2」 is Eistein's signature. 

我會解釋得更詳細些,我想,對於學習的緣故...

(\s|^)\"被捕獲字符串的任何空間或然後開始一個引號

([^\"])+捕捉不報價的任何字符(字符串中假設在引號之間的一切。

\"是一個極端g引號

然後,我用捕捉到的中間字符串和瞧,放置聰明的引號!希望有所幫助!

+0

這對雙引號很有用。但單一的是有點棘手。任何想法如何最好地識別單獨的引號單獨的一對,並按照你所做的那樣轉換它們,並處理用作內部單詞撇號的引號,如「不能」 – COMisHARD

+0

@COMisHARD所以我會假設在「can 't',那麼你只需要把一封信後的所有撇號替換爲一個單引號,而不是相反的權利?在這種情況下,我鏈接另一個「替換」。所以像這樣'''.replace(/([A-Za-z])\'/ g,「$ 1 \ u2019」)'''...順便說一下,如果您要轉換單引號引號,應該在本節之後鏈接'replace'子句 – josephnvu