2017-02-07 5 views
2

У меня есть строка с определенным количеством запятых. Я хочу найти индекс 5-й запятой, а затем соединить его. Как мне это сделать?Как удалить n-й символ из строки?

Как эта строка: "This, is, my, javascript, string, to, present"

Turn в это: "This, is, my, javascript, string to, present"

ответ

3

var str = "This, is, my, javascript, string, to, present"; 
 

 
var i = 0, c = 5; // for flexibility c could be any number (3 for the third, ...) 
 
while((i = str.indexOf(',', i + 1)) !== -1 && --c) // look for the fifth comma if any 
 
    ; 
 

 
if(i != -1) // if there is a fifth comma 
 
    str = str.substr(0, i) + str.substr(i + 1); // then remove it 
 

 

 
console.log(str);

1

попробовать что-то вроде этого?

function getPosition(string, subString, index) { 
    return string.split(subString, index).join(subString).length; 
} 

Использование:

var myString = "This, is, my, javascript, string, to, present"; 
getPosition(myString, ',', 5); 
+1

Не используйте 'string' в качестве параметра или имя переменной, как это зарезервированное ключевое слово. –

2

Вы можете склеить массив после разрезая строку.

var string = 'This, is, my, javascript, string, to, present', 
 
    pos = 5, 
 
    temp = string.split(','); 
 
    
 
temp.splice(pos -1, 0, temp.splice(pos - 1, 2).join('')); 
 

 
console.log(temp.join(','));

1

Попробуйте это;

function removeCharacterAtIndex(value, index) { 
 
    return value.substring(0, index) + value.substring(index + 1); 
 
} 
 

 
var input = "This, is, my, javascript, string, to, present"; 
 
console.log(removeCharacterAtIndex(input, 32));

+0

Добро пожаловать в переполнение стека :-) Пожалуйста, посмотрите на [ответ]. Вы должны предоставить некоторую информацию, почему ваш код решает проблему. Кодовые ответы не полезны для сообщества. – JimHawkins

1
var myStringArray = myString.split(""); 
var count = 0; 
myStringArray.forEach(function(item, index){ 
if(item === ','){ 
    count ++; 
} 
if (count ===5){ 
    indexOf5thcomma = index; 
} 
}); 
myStringArray.splice(indexOf5thcomma, 1); 
myString = myStringArray.join(""); 
+0

Можете ли вы добавить 'break' после' indexOf5thcomma = index; 'поэтому он выходит из цикла ... Я думаю, что это сделает код немного быстрее :) –

+0

не может сломать foreach, но я могу бросить Исключение действительно –

+0

Пожалуйста, посмотрите на [ответ].Вы должны предоставить некоторую информацию, почему ваш код решает проблему. Кодовые ответы не полезны для сообщества. – JimHawkins

1

использовать некоторые приемы на String.prototype.replace:

function replace (str, word, pos) { 
    let cnt = 0 
    return str.replace(word, word => ++cnt == pos ? '' : word) 
} 

console.log(replace("This, is, my, javascript, string, to, present", ',', 5) 

Второй аргумент String.prototype.replace может быть функцией, которая получает найденную строку и возвращает строку быть место в позицию. Поэтому мы можем использовать счетчик с контуром, чтобы определить, какая запятая должна быть удалена.

2

) Раствор, используя функцию String.prototype.replace():

var str = "This, is, my, javascript, string, to, present", 
 
    count = 0; 
 
    spliced = str.replace(/,/g, function(m){ 
 
     return (++count == 5)? '' : m; 
 
    }); 
 

 
console.log(spliced);

) Альтернативное решение с использованием String.prototype.split() и Array.prototype.slice() функции:

var str = "This, is, my, javascript, string, to, present", 
 
    parts = str.split(','), 
 
    spliced = (parts.length > 5)? parts.slice(0, 5).join(',') + parts.slice(5).join(',') : parts.join(','); 
 

 
console.log(spliced);

0

Попробуйте так:

var myString = "This, is, my, javascript, string, to, present"; 
var counter = 0; 

myString = myString.split(""); // string to array 

// find and replace 5th comma in array using counter 
for (var i = 0; i < myString.length; i++) { 
    if (myString[i] === ",") { 
     counter++; 
     if (counter === 5) { 
      myString.splice(i, 1); 
     } 
    } 
} 

myString = myString.join(""); // array to string 
Смежные вопросы