"これは例の文字列です"のように、文字列中の単語の中間文字を混ぜ合わせる雄弁な方法を探しています。 "tihsはeplamxe sritngです。 私は最初に単語を配列に分けることを考えていますが、2文字より長い単語を選択し、最初の部分の最初の文字と最後の文字を分けていますが、スクランブルの良い方法を見つけることはできません。JavaScriptの文字列の真ん中を混ぜる
答えて
function middleMix(s){
var A= s.split(''), c1= A.shift(), c3= A.pop() || '';
while(A.length) c1+= A.splice(Math.floor(Math.random()*A.length), 1);
return c1+c3;
}
このメソッドは、文字の配列に文字列を分割し、最初の文字をオフにシフトし、最後にオフにポップするためにあなたのシャッフル機能を呼び出します。
中間部分(ある場合)は、一度に1つのランダムな文字がスプライスされ、プレフィックスに追加されます。
最後に追加された接尾辞とともに返されます。
//編集 - 複数の単語
function middleMix(str){
var s= str.split(' ');
for(var i= 0; i<s.length;i++){
var A= s[i].split(''), c1= A.shift(), c3= A.pop() || '';
while(A.length) c1+= A.splice(Math.floor(Math.random()*A.length), 1);
s[i]= c1+c3;
}
return s.join(' ');
}
middleMix("this is an example string")
/* returned value: (String)
tihs is an exmlpae sitrng
*/
配列をとり、インデックスiとjの間のすべてをシャッフルする関数を記述します。あなたは見つけることができますexamples here
今すぐすべての単語の開始と終了のインデックスのすべてのペアを識別する文字列から。
は、すべてのペア
編集はるかに良い答え。
ここはすばやく、汚いアプローチです。正規表現を使用すると、少なくとも3文字以上の文字列をすべて検索し、最初の文字、最後の文字、および中間の文字を引き出すことができます。次に、中間文字の配列を分割し、それらをランダムにソートして結合し直します。最初と最後の文字を貼り付けます。ここで
myStr.replace(/\b([a-z])([a-z]+)([a-z])\b/ig, function(str, first, middle, last) {
return first +
middle.split('').sort(function(){return Math.random()-0.5}).join('') +
last;
});
男、私はreg表現を考えていませんでした! – CascadingStyle
誰もが元気! http://xkcd.com/208/ –
があなたのためにそれをするためにいくつかのコードです:ここから取ら
var str = 'this is an example string.';
var arr = str.split(/\b/g);
var i, j;
for(i = 0; i < arr.length; i++){
if(/^\w{4,}$/.test(arr[i])){
var temp = [];
var end = arr[i].length - 1;
for(j = 1; j < end; j++)
temp.push(arr[i][j]);
arr[i] = arr[i][0] + shuffle(temp).join('') + arr[i][end];
}
}
str = arr.join('');
document.write(str);
function shuffle(o){
for(var j, x, i = o.length; i; j = parseInt(Math.random() * i), x = o[--i], o[i] = o[j], o[j] = x);
return o;
};
は、シャッフル機能:ここでhttp://snippets.dzone.com/posts/show/849
あなたが行く:http://jsfiddle.net/66LXx/
このコードは、トリックを行い、まあ、あなたが言ったように私は条件では、文字列の長さを見つけることを考慮しているが、2よりも3より大きい必要があります。
<script type="text/javascript">
var myString = "hello world" ; ' some value
var mySplitResult = myString.split(" "); ' now split it with space seperator
var a = mySplitResult.Length(); ' get the lenth of splitted array in a
var i ;
var temp;
var result_string;
result_string= "";
for(i=0;i<a;i++)
{
var k = mysplitResult[i].length(); ' now get the length of each string of array
if (k > 3) ' greater than 3 then enter if block
{
mySplitResult = mySplitResult.Reverse() ' just used reverse function
temp = mySplitResult[0];
mySplitResult[0] = mySplitResult[k-1]; ' then swapped first and last element of the string
mySplitResult[k-1] = temp;
result_string = result_string + mySplitResult[i]; ' here is the result string this is what is final output
}
else
{
result_string = result_string + mySplitResult[i];
}
}
</script>
完全なhtmlページのバージョン。 コアは@ kennebecのコードであり、関数の入力/引数は、好きな "テキスト" HTMLタグのリストであり、アポストロフィ間です。
私は 'を理解していません。いくつかの段落の後に「未定義」エラーが発生します。 (www.juxta.hu/eng/04.html) しかし、それはワーキング幅のインプレイスHTML要素です。例えば、 。
<em>Para<b>graph</b>I.C. etc.</em>
私のための秘密は、このセクションの作業の方法です:
if (s[i].search("<")==-1)
{s[i].split("<*>")
分割さ単語がされていない場合(== - 1)任意のHTML要素(幅 "<" 文字)が含まれていました、その後、カットアウト、私はラッキーだった
.split("<*>")
...ということ。 ?
<script>
function shuffle()
{
for (var k = 0; k < arguments.length; k++)
{
var x = document.getElementsByTagName(arguments[k]);
for (var n = 0; n < x.length; n++)
{
var s= x[n].innerHTML.split(' ');
for (var i= 0; i<s.length; i++)
{ if (s[i].search("<")==-1)
{s[i].split("<*>");
var A= s[i].split(''), c1= A.shift(), c3= A.pop() || '';
while(A.length) c1+= A.splice(Math.floor(Math.random()*A.length), 1);
s[i]= c1+c3;
}
}
x[n].innerHTML= s.join(' ');
}
}
}
</script>
<body onload='shuffle("p", "a", "li", "h1", "span", "u", "b", "dd", "dt")'>
trans ... late ... d –
- 1. は、文字列の真ん中を抽出する - JavaScriptの
- 2. 文字列の真ん中の文字を正規表現で削除する
- 3. 文字列の真ん中を置き換えます。
- 4. 文字列の真ん中の正規表現
- 5. JavascriptまたはJqueryを使用して文字列の真ん中のテキストの色を変更する方法
- 6. 正規表現オプションのホワイトスペース内の真ん中の文字列にマッチする
- 7. Regexが文字列の真ん中で何かを見つける
- 8. Javaで2つの文字列を混ぜる
- 9. mysqlクエリの結果に文字列を混ぜる
- 10. Javascriptの文字列中の非文字を数えます。
- 11. 文字列のフォーマット混乱
- 12. Javascript remove all '|'文字列の中に
- 13. 2つの文字列の真ん中に正規表現があります
- 14. Pandas混合値の列と文字列
- 15. jsdom:大文字と小文字を混ぜて解析する
- 16. エラーテキストボックスの真ん中のSQL構文
- 17. 文字列番号混乱
- 18. 文字列 '0' が真である| JavaScriptで偽
- 19. フレンドボックス縦列の真ん中への
- 20. C++は文字列を混ぜていますか?
- 21. 文字列内のJavascript文字列
- 22. 混在文字列に私のコードの
- 23. 配列中の文字列
- 24. 出力のNASM混合文字列
- 25. 種類の文字列を混ぜて、煎茶の中に入れてください
- 26. asp.netのHTMLヘルパーでカミソリと文字列リテラルを混ぜる方法MVC
- 27. jQueryの文字列の中の文字列の配列
- 28. 文字列のJavaScript配列
- 29. JavaScriptの文字列の部分文字列を取得できません
- 30. Javascript:文字列中のスラッシュ(/)のインデックスを探す
メモと同じように、彼は各単語が混ざり合っていて、全体の文字列ではありません。彼はそれを最初に分割し、各セクションをランダム化する必要があります。最後に、すべてのセクションをまとめて戻します。 – mrtsherman
とてもエレガントで、説明に感謝します! – CascadingStyle
男、なぜ説明が付いていませんか?それは私にとって素晴らしい解決策のように見えます。彼はOPのためのすべての仕事をしなければならないのですか?例 - http://jsfiddle.net/YgMF3/ – mrtsherman