2009-06-10 4 views
0

Кто-нибудь знает, как я могу заменить этот символ 2 ниже из строки в код?заменить символ в javascript

  • 'левый одинарная кавычка в ‘
  • ' правой одинарную кавычку в ’
  • "левая двойная кавычка в “
  • " правой двойной кавычки в ”
+0

Вы имели в виду для каждого из тех, кто находится на своей собственной линии? – Nosredna

+1

Он хочет заменить обычные кавычки на «кудрявые». –

+0

ОК. Я собираюсь переформатировать, так что это легче понять. – Nosredna

ответ

1

Зная, какой способ сделать кавычки (слева или справа) будет непросто, если вы хотите, чтобы он был надежным. Если это не так уж важно, чтобы сделать это совершенно правильно все время, вы можете использовать несколько регулярных выражений:

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 

Вы увидите, что второй 'не изменяется должным образом.

1

The твердая часть - это идентификация апострофов, что испортит количество одиночных кавычек.

Для двойных кавычек, я думаю, что можно найти их все и заменить нечетные левые фигурные и четные с правильной фигуркой. Если у вас нет случая с вложенными котировками.

Что такое источник? Английский текст? Код?

0

Я недавно написал механизм префиксации типографии, который называется jsPrettify, который делает именно это. Вот только версия с кавычками, которую я использую (оригинал here):

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; 
}; 
Смежные вопросы