1

したがって、mouseenter/mouseleave 関数を除いて、これが行うべきことは、ユーザー入力を取得し、それを各配列配置に 3 文字の配列に分割することです (例: ユーザー入力 abcdef... は abc、def になります) 、...)。スタック オーバーフローに関する別の投稿を読みました ( How do you split a string at certain character numbers in javascript? )。ただし、これを次のコードで機能させることはできません。

ここに私のscript.jsがあります:

$(document).ready(function() {
    $('#button_translate').mouseenter(function() {
        $('#button_translate').fadeTo('fast', 1);
    });
    $('#button_translate').mouseleave(function() {
        $('#button_translate').fadeTo('fast', 0.7);
    });
    $('#button_clear').mouseenter(function() {
        $('#button_clear').fadeTo('fast', 1);
    });
    $('#button_clear').mouseleave(function() {
        $('#button_clear').fadeTo('fast', 0.7);
    });
    $('#button_translate').click(function() {
        var dna = $('input[name=dna]').val();
        var dna = dna.toUpperCase();
        function allBases(text) {  
            var bases = /^[ACGT]+$/;  
            if(text.match(bases)) {  

                var arr = Array.prototype.slice.call(dna), output = [];
                while (arr.length) output.push(arr.splice(0, 3).join('');
                document.write(arr + " is a DNA sequence.");

            }
            else
            {  
                document.write(dna + " is not a real DNA sequence.");
            }  
        }

        allBases(dna);

    });
});
4

3 に答える 3

2

この投稿が役立つと思います:

文字列を同じ長さの文字列の配列に分割する

コードに適用すると、次のように置き換えることができます。

    var arr = Array.prototype.slice.call(dna), output = [];
    while (arr.length) output.push(arr.splice(0, 3).join('');

と:

    var arr = text.match(/.{1,3}/g);
于 2013-08-11T21:48:53.090 に答える
0

ループする必要はありません。正規表現を使用できます。すべての文字 (スペース、数字、句読点) を均等に扱いたい場合は、次のようにします。

var userString = 'I am a terrible swimmer';
var resultArray = userString.match(/[\s\S]{1,3}/g);

\s\S = 何でも。 {1,3} = 1 ~ 3 文字。これにより、3 文字のグループと、最後に残ったもの (たとえば、文字列に 4 文字が含まれている場合) が得られます。

于 2013-08-11T21:53:09.667 に答える
0

これを変えるだけ

while (arr.length) output.push(arr.splice(0, 3).join('');

これに

while (arr.length) output.push(arr.splice(0, 3).join(''));

違いに気づきましたか?最後に行方不明)!! .

于 2013-08-11T21:51:56.813 に答える