2016-09-27 68 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的”回到一起加入每个元素。