2013-08-11 3 views
1

Итак, что это должно сделать, за вычетом функций mouseenter/mouseleave, следует вводить пользовательский ввод, делить его на массив с тремя буквами в каждом размещении массива (например, пользовательский ввод abcdef ... будет включен в abc , def, ...). Я прочитал другое сообщение о переполнении стека, (How do you split a string at certain character numbers in javascript?). Однако я не могу заставить это функционировать в моем следующем коде.Как отделить переменные от массивов 3?

Вот мой 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); 

    }); 
}); 
+0

Что относительно пробелов? Если пользователь вводит «я отличный человек», какими будут массивы? –

+0

Это выглядит правильно. Что не удается? Вы имели в виду использовать выход? (Кажется, у вас сейчас нет) – WuTheFWasThat

+0

Вам не хватает ')' .. проверьте мой ответ. он должен работать нормально. – woofmeow

ответ

2

Я думаю, этот пост может помочь:

Split string into array of equal length strings

Применяя его в код, вы можете заменить:

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); 
0

Просто измените этот

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

к этому

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

Обратите внимание на разницу? Отсутствует ) в конце !!.

0

Вам не нужна петля, вы можете использовать регулярное выражение. Если я предполагаю, что вы хотите, чтобы рассматривать все символы одинаково (пробелы, номер, знаки препинания), то:

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

\ S \ S = ничего. {1,3} = от 1 до 3 символов. Это даст вам группы из трех символов, и все, что осталось в конце (если ваша строка имеет, скажем, четыре символа в ней).

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