1

所以这应该做的,减去 mouseenter/mouseleave 函数,是接受用户输入,将它分成一个数组,每个数组位置有 3 个字母(例如,用户输入 abcdef... 将变成 abc,def ,...)。我读了一篇关于堆栈溢出的不同帖子,(如何在 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 个字符。这将为您提供三个字符的组,以及最后剩下的任何内容(例如,如果您的字符串中有四个字符)。

于 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 回答