2013-09-10 4 views
3

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

function ParseText() 
{ 

    var myText = "asdf\n hat\n cat dog\n apple"; 

    var lines = myText.split("\n"); 
    var results = ""; 

    for (var i = 0, len = lines.length; i < len; i++) { 
    lines[i].trim(); 
    var words = lines[i].split(" "); 

    for (var j = 0, lenght = words.length; j < lenght; j++) { 
     var word = words[j]; 

     if (word.charAt(0) == "a" || word.charAt(0) == "e" || word.charAt(0) == "i" || word.charAt(0) == "o" || word.charAt(0) == "u" || word.charAt(0) == "y") 

     { 
     results = results + word + "ay "; 
     }else { 
     var mutated = word.substring(1, word.length); 
     mutated = mutated + word.charAt(0)+ "ay "; 
     results = results + mutated; 
     } 
    } 
    results = results + "\n"; 
    } 
    return results; 
} 

На линии lines[i].trim(); ничего, кажется, происходит. пробел по-прежнему становится элементом \ n в разделенном массиве.

Что я должен изменить, чтобы удалить пробелы?

+1

Рассматривали ли вы регулярные выражения? Просто сказать ... – elclanrs

+0

, если это действительно идеальный вариант использования. тогда мне нужно увидеть прекрасный пример ;-) – jth41

+0

Проверьте мой ответ, может быть, не идеальный, но путь короче. – elclanrs

ответ

7

lines[i].trim(); не изменяет текущую строку (см. doc here). Он возвращает новую строку.

Если вы хотите обрезать текущую строку, то вам нужно сделать, это:

lines[i] = lines[i].trim(); 
1

Согласно комментариям, здесь очень базовая версия свинью латинском с использованием регулярных выражений, который работает со строчными строками, но она может быть скорректирована, чтобы обрабатывать смешанный нижний и верхний регистр:

function pigLatin(str) { 
    return str 
    .toLowerCase() // make sure string is lowercase 
    .replace(/\b[aeiuo]\w+\b/g, '$&way') // starts with vowel 
    .replace(/\b([^aeiou\s])(\w+)\b/g, '$2$1ay'); // starts with consonant 
} 


// Example: 
var str = 'hello world egg plant yellow'; 
console.log(pigLatin(str)); //=> "ellohay orldway eggway lantpay ellowyay" 
+0

Спасибо за удивительный пример. – jth41

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