2014-09-13 2 views
-2

В следующем коде я попытался создать простой «переводчик» между языком макияжа и английским языком. Если он работал должным образом, вызывая translate.toEnglish("hopeloplopo") вернется hello Calling translate.toLanguage("hello") вернется hopeloplopoНеправильно переводится строка?

В принципе, я хочу, чтобы заменить каждого не гласной буквой + ор, и наоборот, в toEnglish

Это то, что в настоящее время бывает: translate.toLanguage("hello") возвращается "OPello" translate.toEnglish("hopeloplopo") возвращает неопределенные

Пожалуйста, помогите, спасибо!

var vowels = ['a', 'e', 'i', 'o', 'u'] 
var translate = { 
    toEnglish:function(words) { 
     function strip(text) { 
      text = text.replace("OP", "").replace("op", ""); 
      if (text.toLowerCase().indexOf("op") >= 0) strip(text) 
      else return text; 
     } 
     if (words.toLowerCase().indexOf("op") >= 0) strip(words) 
     else return words; 
    }, 
    toLanguage:function(words) { 
     for (var i=0;i<words.length; i++) { 
      if ($.inArray(words[i], vowels)<0) { 
       var split = words.split(words[i]).join("OP"); 
       return split; 
      } 
      else { 
       return words; 
      } 
     } 
    }, 
} 
+3

Что не так с кодом? Что он не делает? Дайте нам что-то, с чем можно работать, без необходимости создавать наши собственные примеры. Покажите нам несколько примеров входов и выходов. – meagar

+3

Кстати, когда вы переводите 'copulate' на свой язык и обратно, вы получаете' culate', видите проблему? –

+0

'Пожалуйста, помогите, спасибо!' - Помогите с чем? Ваш код не работает каким-то образом? Каким образом это будет? Ошибка? Неожиданный результат? Когда вы его отлаживаете, где и как это происходит? – David

ответ

1

Я не был уверен, что ваша проблема была, так что я просто написал, как бы я делать то, что вы описали

var translate = (function() { 
    function toEnglish(str) { 
     return str.replace(/(?=[a-z])([^aeiou])op/gi, '$1'); 
    } 
    function toLanguage(str) { 
     return str.replace(/(?=[a-z])([^aeiou])/gi, function ($0, $1) { 
      return $1 + ($1 === $1.toUpperCase() ? 'OP' : 'op'); 
     }); 
    } 
    return { 
     toEnglish: toEnglish, 
     toLanguage: toLanguage 
    }; 
}()); 

Тогда

translate.toLanguage('Hello');  // "HOPeloplopo" 
translate.toEnglish('HOPeloplopo'); // "Hello" 
Смежные вопросы