2016-11-23 72 views
1

是否可以替换除第一个以外的所有事件? 因此123.45.67..89.0应该变成123.4567890替换除第一个以外的所有事件

编辑:我正在寻找一个正则表达式。 我知道如何用concat或使用索引。

+0

看到这个:http://stackoverflow.com/q/30227218/5241603 –

回答

0

试试这个

var a = '123.45.67.89.0'; 

a.split('.')[0].concat('.'+a.split('.')[1]+a.split('.')[2]+a.split('.')[3]+a.split('.')[4]) 
+0

你不觉得'a.split [0] +( “ ”)“。” + a.split(“。”)。slice(1).join(“”)'可能会更通用一些(并且可读)? – Malvolio

+0

是的,你是对的我的方法是有点冗长...急于我coulnot想想这个方法 –

+0

我不会太担心*长*。担心(1)它不是一般的(假设有五个点,或100),和(2)代码是[重复](https://en.wikipedia.org/wiki/Don%27t_repeat_yourself),这是成熟的对于错误。 – Malvolio

0

会这样欺骗:

"123.45.67.89.0".replace(/\..*/, c => "." + c.replace(/\./g,() => "")) 
+0

是否可以用一个正则表达式来完成它? – xBlue

+0

我很怀疑这样做只用一个正则表达式,而且由于JavaScript处理嵌套组的方式有限制,所以在Javascript中可以进行连接。 – Malvolio

-1

var str="123.45.67.89.0"; 
 
var arr=str.split("."); 
 
var ans=[]; 
 
ans=arr.map(function(a,index){ 
 
return a + (index?"":"."); 
 
}) 
 
console.log(ans.join().replace (/,/g, ""));

+0

这是**不**使用'map()'的方式。你应该写'arr.map(function(a,index){return a +(index?“”“”。“)})'。 – Malvolio

+0

而且,它不是**加入数组的方式。使用'.join(“”)'。 – Malvolio

+0

@Malvolio没关系。但我正在得到答案,因为他想 – Mahi

2

使用JS:

var str = "123.45.67.89.0"; 
 

 
var firstOccuranceIndex = str.search(/\./) + 1; // Index of first occurance of (.) 
 

 
var resultStr = str.substr(0, firstOccuranceIndex) + str.slice(firstOccuranceIndex).replace(/\./g, ''); // Splitting into two string and replacing all the dots (.'s) in the second string 
 

 
console.log(resultStr);

希望这有助于:)

+0

这是正确的,它的工作原理。我认为'indexOf'可能比较便宜,而不是搜索。我正在寻找一个正则表达式解决方案。 – xBlue

0

也许拼接()更适合于这一点。

var str = "123.45.67.89.0"; 
var arr = str.split("."); 
var ans = arr.splice(0,2).join('.') + arr.join(''); 

alert(ans); 
// 123.4567890 
相关问题