2016-09-27 8 views
0

しかし、まだ理解していません。最初は入力ボックスにデータがありませんが、ユーザーが入力を開始すると関数がそのメソッドを起動しますが、最初の行は[$(this).val()。split( " - ")。join(" "); ]は分割するハイフン文字を探しますが、ユーザーdosentによって入力されたデータにハイフンが含まれているため、置き換えなければならないものは... ???上記で説明したように"a"、 "b"、 "c" ...と表示されます。このデータにはすでにハイフン文字が含まれており、角括弧で指定した文字に置き換えられます。もう一度私はこれも理解していません:foo = foo.match(新しいRegExp( '。{1,4}'、 'g')))join( " - ");なぜRegExpに一重引用符があるのか​​、1,4は何のためのものなのですか????私が知っている限り、それは最小の1文字と最大4文字の意味でなければなりません。これを理解するのを助けてくれますか?分割と結合はどのようにJavaScriptで機能しますか?

+1

split()は、文字列を指定された区切り文字に基づいて配列に分割します。 join()は、配列内のすべての要素を、指定された区切り文字を持つ文字列に結合します。上のコードは、正規表現と一致するアイテムの配列を取得し、ダッシュを区切り文字として使用して単一の文字列に結合します。 – mhodges

+0

正規表現の詳細:https://developer.mozilla.org/en-US/docs/ Web/JavaScript/Guide/Regular_Expressions – epascarello

+0

ハイフンがないと何が起こるかを簡単なデバッグで表示します。 – epascarello

答えて

5

関数呼び出しは左から右に評価されます。最初にval()、次にsplit("-")、次にjoin("")

これは値を読み取り、クレジットカード番号と思われるため、値は1234-5678-9012-3456のようになります。

次に、split("-")でハイフンで数字を分割します。これにより、一覧の一種が表示されます['1234', '5678', '9012', '3456']

このリストは""(実際には何もありません)を使用して結合され、結果は123456789、ハイフンなしの数字になります。

同じことは、正規表現を使用して

$(this).val().replace(/-/g, "")

で達成することができました。

これは物事を明確にします。 ' - '(ハイフン)

.split("-") 

は、上分割文字列の配列を構築:

+0

'$(this).val()。replace(" - "、" ")'よりも '-'が複数ある場合はうまくいきません。文字列 "a-b-c"は "ab-c"になります。 '$(this)).val()。replace(/ -/g、" ")' – epascarello

+0

はい、正しいです。もともと私はRegExを使うことを意図していましたが、プログラミングの初心者だから質問の著者を混乱させるかもしれないと思っていました。その制限を忘れてしまった。私は答えを更新します。ありがとうございました! – JHolub

0
$(this).val() 

は、要素の値を取得します。基本的に、文字列の中で ' - 'が見つかると、それを 'foo-bar'に追加します。['foo'、 'bar']になります。

.join(""); 

['foo'、 'bar']という配列を空の文字列で結合します。つまり、 'foobar'になります。

関連する問題