Как использовать regex для utf8 в рубине

Это довольно просто сделать. Создайте div и установите его innerHTML в качестве содержимого шаблона. Затем добавьте div к DOM.

Вы были на правильном пути, но только что пропустили один жизненно важный шаг.

var data = [{
"Title": "One"},
{"Title": "Two"},
{"Title": "Three"}];

var template = document.querySelector('#container').innerHTML;
var contents = '';
for(var i = 0; i < data.length; i++){
 contents += template.replace(/\{\{title\}\}/, data[i].Title);
}

//var contents = template.replace(/\{\{title\}\}/, "Title");;
var section = document.createElement("div");
section.innerHTML = contents;
var innerSection = section.querySelectorAll(".section");
innerSection.forEach(el=>el.classList.add("bg-yellow"));
document.getElementById('content').appendChild(section);
.sub-section {
  background: tomato;
  width: 100px;
}

.bg-yellow {
  background: yellow!important;
  width: 100%;
  height: auto;
}
<div id="content"></div>
<script type="template" id="container">
  <div class="section">
    <div class="sub-section">
      <h1>{{title}}</h1>
    </div>
  </div>
</script>

РЕДАКТ. вопрос: - /

11
задан blank 27 January 2009 в 06:16
поделиться

4 ответа

Ruby 1.8 имеет плохую поддержку строк UTF-8. Необходимо записать байты индивидуально в регулярном выражении, скорее затем полный код:

>> "acentuação".scan(/\xC3\xA7/)
=> ["ç"]    

Для соответствия диапазону, Вы указали, что выражение станет немного сложным:

/([\x4E-\x9E][\x00-\xFF])|(\x9F[\x00-\xA5])/  # (untested)

Это будет улучшено в Ruby 1.9, все же.

Править: Как отмечено в комментариях, unicode символы \u4E00-\u9FA5 только отображаются на выражение выше в UTF16 - закодировать. Кодирование UTF8, вероятно, отличается. Таким образом, необходимо проанализировать отображение тщательно и видеть, можно ли придумать соответствующее байту выражение для Ruby 1.8.

10
ответ дан 3 December 2019 в 07:40
поделиться

activeSupport имеет обработчик UTF-8

http://api.rubyonrails.org/classes/ActiveSupport/Multibyte/Handlers/UTF8Handler.html


иначе посмотрите в рубиновых 1.9, методе кодирования для Объектов RegExp

1
ответ дан 3 December 2019 в 07:40
поделиться

Механизм Oniguruma regexp имеет надлежащую поддержку Unicode. Ruby 1.9 использует Oniguruma по умолчанию. Ruby 1.8 может быть перекомпилирован для использования его.

С Oniguruma можно использовать тот же самый regex в качестве в PHP, включая/u модификатор, чтобы вынудить Ruby рассматривать строку как UTF-8.

2
ответ дан 3 December 2019 в 07:40
поделиться

Вот что я сделал:

%r{^[#{"\344\270\200"}-#{"\351\277\277"}]+$}

Это в основном регулярное выражение с восьмеричными значениями, которые представляют диапазон между U+4E00 и U+9FFFF, наиболее распространенными китайскими и японскими иероглифами.

.
3
ответ дан 3 December 2019 в 07:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: