1

テキストエリアを検索してピリオドを見つける方法を理解するのに苦労しています。ピリオドを見つけた後、ピリオドの後に「arrr」を追加するかどうかをランダムに決定する必要があります。これは、50/50の確率であるはずです。そこに印刷された単語。お願い助けて!!!これが私がこれまでに行ったことです、それは一種の混乱したドキュメントです。getElementById( "translate")。onclick = function changed(){

var outpara = document.getElementById("out")
var paragraph = document.getElementById("input").value;
paragraph = paragraph.toLowerCase();
while(paragraph.indexOf("hello")!== -1) 
{ 
paragraph = paragraph.replace("hello", "Ahoy"); 
}
while(paragraph.indexOf("excuse me")!== -1) 
{
paragraph = paragraph.replace("excuse me", "arrr"); 
}
while(paragraph.indexOf("sir")!== -1) 
{
paragraph = paragraph.replace("sir", "matey"); 
}
while(paragraph.indexOf("madam")!== -1) 
{
paragraph = paragraph.replace("madam", "proud beauty"); 
}
while(paragraph.indexOf("officer")!== -1) 
{
paragraph = paragraph.replace("officer", "foul blaggart"); 
}
while(paragraph.indexOf("where is")!== -1) 
{
paragraph = paragraph.replace("where is", "whar be"); 
}
while(paragraph.indexOf("can you help me find")!== -1) 
{
paragraph = paragraph.replace("can you help me find", "know ye"); 
}
while(paragraph.indexOf("is that")!== -1) 
{
paragraph = paragraph.replace("is that", "be that"); 
}
while(paragraph.indexOf("the")!== -1) 
{
paragraph = paragraph.replace("the", "th'"); 
}
while(paragraph.indexOf("my")!== -1) 
{
paragraph = paragraph.replace("my", "me"); 
}
while(paragraph.indexOf("your")!== -1) 
{
paragraph = paragraph.replace("your", "yer"); 
}   
while(paragraph.indexOf("restroom")!== -1) 
{
paragraph = paragraph.replace("restroom", "head"); 
}   
while(paragraph.indexOf("restaurant")!== -1) 
{
paragraph = paragraph.replace("restaurant", "galley"); 
}
while(paragraph.indexOf("hotel")!== -1) 
{
paragraph = paragraph.replace("hotel", "fleabag inn"); 
}
var x = paragraph.split(" ");
var repl= [Math.floor (Math.random()* 2)]
    if(repl === 0 || repl === 1)
        paragraph.replace(".", ". arrrr")
    else
        paragraph.replace(".", ".")
var readySentance=[];
while(x.indexOf(".")!==-1)
{
    for(var i = 0; i < paragraph.length; ++i)
        {
        x.push(". Arrrr");
        }
}

私のHTMLは次のようになります

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title> Pirate Translator</title>
<!--<link rel = "stylesheet" href="css/normalize.css" />
<link rel = "stylesheet" href="css/styles.css" />-->
</head>
<body>
<h1> Land Lovin' Lady's Pirate Translator</h1>
<p> Simply click on the buttons to translate words and/or phrases from English to  pirate talk</p><hr />
<form name = "pirateForm">

<div>   
<textarea id="input"></textarea>
<textarea id="out" readonly></textarea>
<input onclick= "changed();" type="button" id ="translate" value="translate"/>
<input onclick="clearArea2()" type="button" id="clear2" value= "clear"/>
<script src="pirate4.js"></script><br>

</form>
</div>
</body>
</html>
4

1 に答える 1

2

正規表現(グローバルフラグを指定できるようにするためg)とコールバックを置換で使用します。

paragraph = paragraph.replace(/\./g, function(){ return Math.random() < 0.5 ? ". arrrr" : "." });

arrrrこれにより、すべてのオカレンスが1つのコマンドに置き換えられるため、ランダム性を通過するために何回試行しても、すべてのピリオドの後に配置されるループに陥ることはありません。

同様に、すべての置換で正規表現を使用できるため、ループに含める必要はありません。これにより、次のすべての発生が置き換えられますhello

paragraph = paragraph.replace(/hello/g, "Ahoy");
于 2013-03-18T02:05:58.583 に答える