2016-09-16 6 views
-2

にそれらを保存します。JavaScriptを - 手紙に分割言葉と私はこのコードを持っている配列

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <title>Bad Grammar Generator</title> 
</head> 
<body> 

    <input type="text" id="userIn"> 
    <input type="button" name="name" id="btn" value="Bad Grammar-ify" onclick="badgrammar()"> 
    <span id="output"></span> 
    <script type="text/javascript"> 
    var userIn = document.getElementById("userIn").value; 
    function badgrammar() { 
     var userIn = document.getElementById("userIn").value; 
     var output = document.getElementById("output"); 
     var split = new Array(); 
     split = userIn.split(" "); 
     output.innerText = split; 
    } 
    </script> 

</body> 
</html> 

それは動作しますが、それは一つの単語にユーザー入力を分割します。どのように私はそれを文字にユーザー入力を分割することができますか?

例:

入力:Hi there 出力:H,i,t,h,e,r,e

+1

'userIn.split(" ");'(スペースはありません)は個々の文字に分割されますが、スペースも除外したいと思うのですか? – smarx

答えて

2

これは、あなたが欲しいものを行う必要があります。二つのステップはここにあること

var split = userIn.replace(/ /g, '').split(''); 

注:

  1. replace(' ', '')をinpu内のすべての空白を削除します。 t(何も置き換えない)。
  2. split('')は、個々の文字に分割されます。
+0

これは最初のスペースだけを置き換えます。 '.replace(//g、 '')を試してください。 – usandfriends

2

あなたはそのためのmatchを使用することができます。

s = "hi there"; 
 
res = s.match(/\S/g); 
 
console.log(res);

正規表現\Sは空白ではない任意の1文字に一致します。 matchは、すべて一致する配列を返します。したがって、実際には、空白以外の入力からのすべての文字を含む1文字要素の配列になります。

+0

このソリューションは、他の非正規表現ベースのソリューションよりもはるかに非効率的です。 – usandfriends

+2

@usandfriends、私はOPが求めている部分的な使用、つまりHTMLの 'input'要素の違いを気付かないと思います。 – trincot

+0

ちょうどパフォーマンステストを行いました:200,000文字の文字列に対して、このコードは私のPCで15ミリ秒かかることがありました。だから...パフォーマンスはここでは問題ではないと思う。 – trincot

関連する問題