2013-07-15 3 views
1

Я пытаюсь адаптировать сценарий, который преобразует весь текст CAPS в текстовую область в нижний регистр (с первым заглавным словом). Часть моей проблемы была решена here.Может ли кто-нибудь объяснить эту логику?

Это работает, но ... мой текст textarea находится в следующем формате: тире, пробел, затем ТЕКСТ.

- TEXT1
- TEXT2
- text3

Сценарий у меня есть, и логика .Надеть, не учитывают в «-» и в пространстве, и она не учитывает для каждой линии отдельно ,

здесь сценарий:

$(window).load(function(){ 
$('#normalize').click(function capitalizeSentences(){ 

var capText = $("#finaltext").val(); 
capText = capText.toLowerCase(); 

capText = capText.replace(/\.\n/g,". [-<br>-]. "); 
capText = capText.replace(/\.\s\n/g,". [-<br>-]. "); 
var wordSplit = '. '; 

var wordArray = capText.split(wordSplit); 

var numWords = wordArray.length; 

for(x=0;x<numWords;x++) { 

    wordArray[x] = wordArray[x].replace(wordArray[x].charAt(0),wordArray[x].charAt(0).toUpperCase()); 

     if(x==0) { 
      capText = wordArray[x]+". "; 
     }else if(x != numWords -1){ 
      capText = capText+wordArray[x]+". "; 
     }else if(x == numWords -1){ 
      capText = capText+wordArray[x]; 
     }    
} 
capText = capText.replace(/\[-<br>-\]\.\s/g,"\n"); 
capText = capText.replace(/\si\s/g," I "); 
$("#finaltext").val(capText); 
}); 
}); 

Я не придерживаться синтаксиса или логики в .Привернуть() порции. Есть ли учебник о том, как построена логика, или кто-то может дать мне разбивку, чтобы я мог более точно ее адаптировать?

+0

Два слова: регулярные выражения :) – jsalonen

+0

Поэтому логика в .Привернуть скобки следует Regex правилу? или заменяет команду RegEx? Этот учебник кажется хорошим, поэтому я дам ему sho: http://www.regular-expressions.info/characters.html – user1837608

+0

См. Мой ответ для деталей! – jsalonen

ответ

0

Хорошо, после некоторого чтения на RegEx и некоторых проб и ошибок, у меня есть (споткнулся) при решении к моей проблеме.

Я понял, что большая часть материала в сценарии, который я приспособила, была неактуальной барахлом. Поэтому я отступил и взял проблему по частям.

Во-первых, я решил вынести весь текст в нижнем регистре:

var capText = $('#finaltext').val(); 
capText=capText.toLowerCase(); 

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

.replace(/- ./g, 

найдет одну буквы после тира во всех случаях, то я совмещаю с функцией сделать прописной:

.replace(/- ./g, function(c){return c.toUpperCase();}); 

окончательный код:

$('#normalize').click(function capitalizeSentences() { 
    var capText = $('#finaltext').val(); 
    capText=capText.toLowerCase(); 
    capText2 = capText.replace(/- ./g,function(c){ return c.toUpperCase(); }); 
    $("#finaltext").val(capText2); 
}); 

Смотрите здесь - http://jsfiddle.net/fDy6K/

0

Что вы видите в коде: literal format for regular expressions. В буквальном формате вы включаете выражения внутри косых черт (/) и необязательно добавляете флаги после второй косой черты.

В вашем конкретном примере кода:

capText.replace(/\.\n/g,". [-<br>-]. "); 

эквивалентно

capText.replace(new RegExp("\.\n", "g"),". [-<br>-]. "); 
+0

На самом деле, теперь, когда я лучше понимаю выражение, я вижу, что выражения .replace полностью лишены моих конкретных потребностей.Эти выражения находят концы предложений, определяемые периодами и пробелами, и обрабатывают начало предложения. Поскольку мои текстовые поля не будут заполнены предложениями как таковыми, я должен отказаться от этого заимствованного кода и начать с самого начала заменой первого появления буквы, следующей за тире и пробелом, с верхним регистром. – user1837608

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