2015-03-25 3 views
0

Я пытаюсь отменить символы пунктуации, которые появляются до или после выбора, и использовать функцию расширения слова. Например, у меня есть эта аннотацию:Rangy как развернуть без символов?

(56,87%) , а-хам inol (Жирный текст выделен текст "" включен)

Я пытаюсь получить следующее:

(56,87%), α-cadinol (Жирный текст выделен текст)

Я попробовал следующий метод:

 var sel = rangy.getSelection(); 
     var range = sel.getRangeAt(0); 

     var selectedText = range.text(); 
     // Trim start 
     var match = /^\s*\.*\,*\"*\'*\;*\“*\-*\s*/.exec(selectedText); 
     if (match) { 
      range.moveStart("character", match[0].length); 
     } 

     // Trim end 
     match = /\s*\.*\,*\"*\'*\;*\”*\-*\s*$/.exec(selectedText); 
     if (match) { 
      range.moveEnd("character", -match[0].length); 
     } 
     sel.setSingleRange(range); 

     sel.expand("word", { 
      trim: true 
     }); 

Но не работает должным образом. Первая часть одних работает, но со второй он не работает, потому что это приводит к следующему:

(56,87 %), & alpha; cadinol (выделен Жирный текст)

ответ

1

Все выглядит хорошо. Проблема в том, что регулярное выражение по умолчанию, которое Ранги использует для определения того, что составляет слово, очень упрощено. К счастью, вы можете переопределить его в параметрах, которые вы передаете для расширения. Пример здесь также предназначен как отправная точка для решения непосредственной проблемы; он явно слишком упрощен для общего использования, но должен служить отправной точкой.

sel.expand("word", { 
    trim: true, 
    wordOptions: { 
     wordRegex: /[a-z0-9α]+(['\-][a-z0-9α]+)*/gi 
    } 
}); 
+0

Спасибо Тим. Однако проблема в том, что она берет символы, предшествующие слову. Как и%), когда он выбирает, это только «, α-cadinol». Я думаю, что проблема не в альфа-характере. Я попытаюсь исправить это с более сложным выражением. Благодаря!! – Martin

+0

@Martin: Да, вам все равно понадобятся ваши существующие вещи, чтобы лишить пунктуацию. Извините, я должен был быть яснее. Альфа-символ определенно является проблемой для вызова 'expand()'. Для сравнения см. Следующее: http://jsbin.com/cepisexuco/1 –

+0

Это работает! Но по неизвестным причинам это не сработало для меня. Но это решение. Спасибо. (У меня есть последняя версия Rangy) – Martin

Смежные вопросы