1

テキスト領域内のすべて大文字のテキストを小文字に変換するスクリプトを適応させようとしています (最初の単語を大文字にします)。私の問題の一部はここで解決されました。

それは機能しますが...私のテキストエリアのテキストは、ダッシュ、スペース、TEXTの形式です。

- TEXT1 - TEXT2
-
TEXT3

私が持っているスクリプトと .replace ロジックは、「-」とスペースを考慮しておらず、各行を個別に考慮していません。

ここにスクリプトがあります:

$(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);
});
});

.replace() 部分の構文やロジックには従いません。ロジックがどのように構築されているかについての入門書はありますか? または、より正確に適用できるように、誰かが内訳を教えてくれますか?

4

2 に答える 2

0

コードに表示されているのは、正規表現のリテラル形式です。リテラル形式では、式をスラッシュ ( /) で囲み、必要に応じて 2 番目のスラッシュの後にフラグを追加します。

特定のコード例内:

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

に等しい

capText.replace(new RegExp("\.\n", "g"),". [-<br>-]. ");
于 2013-07-15T22:07:48.177 に答える
0

さて、RegEx を読んで試行錯誤を繰り返した結果、問題の解決策を見つけました。

私が適応させたスクリプトの内容のほとんどは、無関係ながらくたであることに気付きました。だから私は一歩下がって、問題を少しずつ取りました。

まず、すべてのテキストを小文字で表示することにしました。

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

次に、.replace を使用して、「ダッシュ + スペース + 任意の文字」のすべてのインスタンスを検索する必要がありました。

.replace(/- ./g,

これにより、すべてのインスタンスでダッシュの後の 1 文字が検出されます。次に、関数と組み合わせて大文字にします。

.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/

于 2013-07-16T03:10:19.337 に答える