2

したがって、私のcitクラスでは、pig Latinコンバータープログラムを作成する必要があり、配列と文字列を一緒に使用する方法について本当に混乱しています。変換のルールは単純です。単語の最初の文字を後ろに移動してから、ayを追加するだけです。例:英語の地獄はピッグラテン語のellhayになります私はこれまでにこれを持っています:

<form name="form">
<p>English word/sentence:</p> <input type="text" id="english" required="required" size="80" /> <br />
<input type="button" value="Translate!" onClick="translation()" />
<p>Pig Latin translation:</p> <textarea name="piglat" rows="10" cols="60"></textarea>
</form>

<script type="text/javascript">
<!--
fucntion translation() { 
var delimiter = " ";
    input = document.form.english.value;
    tokens = input.split(delimiter);
    output = [];
    len = tokens.length;
    i;

for (i = 1; i<len; i++){
    output.push(input[i]);
}
output.push(tokens[0]);
output = output.join(delimiter);
}
//-->
</script>

私が得ることができるどんな助けにも本当に感謝します!

4

10 に答える 10

4
function translate(str) {
     str=str.toLowerCase();
     var n =str.search(/[aeiuo]/);
     switch (n){
       case 0: str = str+"way"; break;
       case -1: str = str+"ay"; break;
       default :
         //str= str.substr(n)+str.substr(0,n)+"ay";
         str=str.replace(/([^aeiou]*)([aeiou])(\w+)/, "$2$3$1ay");
       break;
    }
    return str;

}


 translate("paragraphs")
于 2015-07-30T13:46:13.430 に答える
3

あなたが本当に見なければならない2つのことはsubstring()、一般的にメソッドと文字列の連結(2つの文字列を足し合わせる)です。呼び出しから返される配列内のすべてのオブジェクトsplit()は文字列であるため、単純な文字列連結は正常に機能します。たとえば、次の2つの方法を使用すると、文字列の最初の文字を次のように最後に移動できます。

var myString = "apple";

var newString = mystring.substring(1) + mystring.substring(0,1);
于 2012-04-24T23:01:04.247 に答える
2

このコードは基本ですが、機能します。まず、母音で始まる単語に注意してください。それ以外の場合は、1つ以上の子音で始まる単語の場合、子音の数を判別して最後に移動します。

function translate(str) {
    str=str.toLowerCase();

    // for words that start with a vowel:
    if (["a", "e", "i", "o", "u"].indexOf(str[0]) > -1) {
        return str=str+"way";
    }

    // for words that start with one or more consonants
   else {
   //check for multiple consonants
       for (var i = 0; i<str.length; i++){
           if (["a", "e", "i", "o", "u"].indexOf(str[i]) > -1){
               var firstcons = str.slice(0, i);
               var middle = str.slice(i, str.length);
               str = middle+firstcons+"ay";
               break;}
            }
    return str;}
}

translate("school");
于 2016-11-30T19:10:51.813 に答える
1

配列に苦労している場合、これは少し複雑かもしれませんが、簡潔でコンパクトです。

var toPigLatin = function(str) {
    return str.replace(/(^\w)(.+)/, '$2$1ay');
};

デモ: http: //jsfiddle.net/elclanrs/2ERmg/

全文で使用するためのわずかに改善されたバージョン:

var toPigLatin = function(str){
    return str.replace(/\b(\w)(\w+)\b/g, '$2$1ay');
};
于 2012-04-24T22:48:33.690 に答える
1

これが私の解決策です

function translatePigLatin(str) {
  var newStr = str;
  // if string starts with vowel make 'way' adjustment
  if (newStr.slice(0,1).match(/[aeiouAEIOU]/)) {
    newStr = newStr + "way";
  }
  // else, iterate through first consonents to find end of cluster
  // move consonant cluster to end, and add 'ay' adjustment
  else {
    var moveLetters = "";
    while (newStr.slice(0,1).match(/[^aeiouAEIOU]/)) {
      moveLetters += newStr.slice(0,1);
      newStr = newStr.slice(1, newStr.length);
    }
    newStr = newStr + moveLetters + "ay";
  }
  return newStr;
}
于 2016-09-01T00:45:41.117 に答える
0

真または偽のスイッチとして別の関数を使用する、それを行う別の方法。

function translatePigLatin(str) {

  // returns true only if the first letter in str is a vowel
  function isVowelFirstLetter() {
    var vowels = ['a', 'e', 'i', 'o', 'u', 'y'];
    for (i = 0; i < vowels.length; i++) {
      if (vowels[i] === str[0]) {
        return true;
      }
    }
    return false;
  }

  // if str begins with vowel case
  if (isVowelFirstLetter()) {
    str += 'way';
  }
  else {
    // consonants to move to the end of string
    var consonants = '';

    while (isVowelFirstLetter() === false) {
      consonants += str.slice(0,1);
      // remove consonant from str beginning
      str = str.slice(1);
    }

    str += consonants + 'ay';
  }

  return str;
}

translatePigLatin("jstest");
于 2016-12-24T21:41:08.373 に答える
0

これは私のソリューションコードです:

function translatePigLatin(str) {
var vowel;
var consonant;
var n =str.charAt(0);
vowel=n.match(/[aeiou]/g);
if(vowel===null)
{
consonant= str.slice(1)+str.charAt(0)+”ay”;
}
else
{
consonant= str.slice(0)+”way”;
}
var regex = /[aeiou]/gi;
var vowelIndice = str.indexOf(str.match(regex)[0]);
if (vowelIndice>=2)
{
consonant = str.substr(vowelIndice) + str.substr(0, vowelIndice) + ‘ay’;
}

return consonant;
}

translatePigLatin(“gloove”);
于 2017-10-06T14:21:00.780 に答える
0

さらに別の方法。

String.prototype.toPigLatin = function()
{
    var str = "";
    this.toString().split(' ').forEach(function(word)
    {
        str += (toPigLatin(word) + ' ').toString();
    });
    return str.slice(0, -1);
};

function toPigLatin(word)
{
    //Does the word already start with a vowel?
    if(word.charAt(0).match(/a*e*i*o*u*A*E*I*O*U*/g)[0])
    {
        return word;
    }

    //Match Anything before the firt vowel.
    var front = word.match(/^(?:[^a?e?i?o?u?A?E?I?O?U?])+/g);
    return (word.replace(front, "") + front + (word.match(/[a-z]+/g) ? 'a' : '')).toString();
}
于 2019-04-08T05:32:28.327 に答える
0

ピッグラテンの別の方法:

function translatePigLatin(str) {
  let vowels = /[aeiou]/g;
  var n = str.search(vowels); //will find the index of vowels
  switch (n){
    case 0:
      str = str+"way";
      break;
    case -1:
      str = str+"ay";
      break;
    default:
      str = str.slice(n)+str.slice(0,n)+"ay";
      break;
  }
  return str;
}

console.log(translatePigLatin("rhythm"));

于 2020-12-02T08:05:51.180 に答える
-1

あなたの友達は文字列関数、そして.split配列関数ととです。.join.slice.concat

警告: 以下は、終了したり、時間をかけすぎたりした場合に参照できる完全なソリューションです。

function letters(word) {
    return word.split('')
}

function pigLatinizeWord(word) {
    var chars = letters(word);
    return chars.slice(1).join('') + chars[0] + 'ay';
}

function pigLatinizeSentence(sentence) {
    return sentence.replace(/\w+/g, pigLatinizeWord)
}

デモ:

> pigLatinizeSentence('This, is a test!')
"hisTay, siay aay esttay!"
于 2012-04-24T22:35:42.423 に答える