2016-11-23 3 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

да, вы правы, мой подход немного длинный ... в спешке я не думаю об этом подходе –

+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

@ Малволио, все в порядке. но я получаю ответ, поскольку он хотел – 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' может быть дешевле вместо' search'. Я ищу регулярное выражение. – 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 
Смежные вопросы