2016-09-27 70 views
0

但仍不明白:在輸入框最初沒有數據,但是當用戶開始鍵入函數開始調用它的方法,但是第一行將[$(this).val()。split(「 -「)。加入(」」); ]然後將查找連字符分割成...但如果用戶dosent鍵入的數據包含任何連字符,所以必須被替換... ???就像你上面解釋的那樣在「a-b-c」上拆分(「 - 」)將給出[「a」,「b」,「c」] ....這個數據已經包含了連字符,並且被括號中指定的字符取代。另一方面,我也不明白這一點:foo = foo.match(new 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

簡單的調試將告訴你什麼時候沒有連字符。 'console.log(「abc」.split(「 - 」))' – epascarello

回答

5

函數調用從左到右進行評估。首先是val(),然後是split("-"),然後是join("")

這是做什麼的,它讀取的價值,因爲它似乎是一個信用卡號碼,價值將像1234-5678-9012-3456

接下來的事情是用連字號split("-")分隔數字。這將導致一種列表['1234', '5678', '9012', '3456']

此列表然後使用""(實際上沒有)加入,導致123456789,數字不帶連字符。

同樣的事情可能

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

使用正則表達式與實現。

希望這個澄清的東西!

+0

如果有多個'-'而不是'$(this).val()。replace(「 - 」,「」)'不起作用。字符串「a-b-c」將是「ab-c」。它需要'$(this).val()。replace(/ -/g,「」)' – epascarello

+0

是的,你是對的。我原本打算使用正則表達式,但我認爲這可能會混淆問題的作者,因爲他似乎是編程新手。忘記了這個限制。我會更新答案。謝謝! – JHolub

0
$(this).val() 

獲取元素的值:

.split("-") 

構建一個字符串數組,關於分割 ' - '(連字符)。基本上,當在字符串中找到' - '時,將它添加到'foo-bar'變爲['foo','bar']。

.join(""); 

採取陣列,並用一個空字符串,即[「富」,「酒吧」]變爲「foobar的」回到一起加入每個元素。