Дополнительно
Как удалить символ из строки с помощью Javascript?
Я так близок к тому, чтобы понять это, но это просто 'не правильно.
Все, что я хочу сделать, это удалить символ r
из строки.
Проблема в том, что в строке есть более одного экземпляра символа r
.
Однако это всегда символ с индексом 4 (то есть 5-й символ).
пример строки: crt/r2002_2
Что я хочу: crt/2002_2
Эта функция замены удаляет оба r
mystring.replace(/r/g, '')
Производит: ct/2002_2
Я попробовал эту функцию:
String.prototype.replaceAt = function (index, char) {
return this.substr(0, index) + char + this.substr(index + char.length);
}
mystring.replaceAt(4, '')
Она работает, только если я заменяю его другим символом. Просто удалить его не получится.
Есть какие-нибудь мысли?
309
17
заменит
/r
на/
, используяString.prototype.replace
.В качестве альтернативы вы можете использовать regex с глобальным флагом (как предложено Erik Reppen & Sagar Gala, ниже) для замены всех вхождений на
EDIT: Поскольку здесь все так веселятся, а user1293504, похоже, не собирается возвращаться в ближайшее время, чтобы ответить на уточняющие вопросы, вот метод удаления N-го символа из строки:
Поскольку user1293504 использовал обычный подсчет вместо подсчета с нулевым индексом, нам'нужно убрать 1 из индекса, если вы хотите использовать это для повторения работы
charAt
, не вычитайте 1 из индекса в 3-й строке и используйтеtmp.splice(i, 1)
вместо этого.Простой функциональный JavaScript будут
mystring совсем = mystring совсем.сплит('/Р').присоединяйтесь('/')
простой, быстрый, он заменит во всем мире и нет необходимости в функции или прототипы
Всегда есть строковые функции, если вы знаете, что всегда будете удалять четвертый символ:
Ваша первая функция-это почти правильно. Просто удалить 'т' флаг, который выступает за 'глобальные' ("редактировать") и дать некоторый контекст, чтобы определить второй 'Р'.
Редактировать: я'т см. Это была вторая 'Р' прежде чем так добавил '/'. Должен \/ бежать '/' при использовании регулярных выражений арг. Спасибо за голоса, но я был неправ поэтому я'МР исправить и добавить более подробно для тех, кто заинтересован в понимании основ регулярных выражений лучше, но это будет работать:
Теперь за чрезмерную объяснение:
При чтении/записи регулярного выражения паттерн думать в терминах: &ЛТ;символ или набор герои&ГТ; за &ЛТ;символ или набор герои&ГТ; за &ЛТ;...
В регулярное выражение &ЛТ;символ или набор герои&ГТ; может быть одновременно:
Так что читается как Е, а затем в, затем с и т. д...
Или один &ЛТ;символ или набор герои&ГТ; может быть персонажей, описанные классовый характер:
Или расширили, чтобы соответствовать количество символов (но все же лучше думать как единый элемент с точки зрения последовательного узора):
Так котик кучка вместе:
И конечно, я'вэ за-разработана, но моя точка зрения была просто, что это:
это серия из 3 элементов рисунка (вещь, затем вещь следует дело).
И так это:
Настолько, как регулярное выражение начинает выглядеть, это все ломается на ряд вещей (потенциально многосимвольный вещи) следующих друг за другом последовательно. Основная точка, но тот, который взял меня некоторое время, чтобы пройти мимо, поэтому я'вэ зашли слишком далеко, объясняя это вот как я думаю, это's один, что бы помочь op и другие новые в regex понять, что's идя дальше. Ключ к чтению/записи регулярных выражений-это разбить его на эти части.
Для глобальной замены '/Р', этот код работал для меня.
Просто исправить вашу
replaceAt
:Я'д называют его
removeAt
вместо этого. :)char.length
равен нулю. В этом случае необходимо добавить1
, чтобы пропустить символ.Это потому, что когда
голец
равная&; на"
, `голец.длина-это 0, так что ваш подстроки объединяются, чтобы сформировать исходную строку. Твоя попытка кода, следующее будет работать:Создайте функцию, как показано ниже
На замену дают характер, как показано ниже
и чтобы удалить символ в определенный индекс, дать второй параметр как пустая строка
Если это всегда 4-й Чар в yourString вы можете попробовать:
Если вы просто хотите, чтобы удалить один символ и Если вы знаете индекс символа, который вы хотите удалить, вы можете использовать следующую функцию:
Я не люблю использовать заменить функцию, чтобы удалить символы из строки. Это не логично чтобы сделать это. Обычно я программу на C# (Шарп), и всякий раз, когда я хочу, чтобы удалить символы из строки, я буду использовать удалить методом класса String, но не заменить способ, хотя он существует, потому что, когда я Удалить, я не удалить, не заменить. Это логично!
В JavaScript нет функции удалить строку, но есть функция substr. Вы можете использовать один или два раза функция substr, чтобы удалить символы из строки. Вы можете сделать следующую функцию, чтобы удалить символы по индексу начала до конца строки, просто как в C# метод первый перегрузки строку.Удалить(инт параметру):
и/или вы также можете сделать следующую функцию, чтобы удалить символы по индексу начать и рассчитывать, как и C# метод второй перегрузки строку.Удалить(инт начальный_индекс, граф инт):
и затем вы можете использовать эти две функции или одна из них для ваших нужд!
Пример:
Вывод: ЭЛТ/2002_2
Достижение целей, выполнив приемы с Никакой логики может вызвать путаницу в понимание кода, и ошибок в будущем, если вы делаете это много в большом проекте!
Следующая функция работает лучше для моего случая:
Самый короткий путь будет использование соединения
Вы можете использовать это:
если ( стр[4] === 'Р' ) НТР = НТР.срез ул.(0, 4) +.нарезать(5)
Объяснение:
Если ( стр[4] === 'Р' )
<БР> Проверьте, если 5-й символ'Р'
<БР>НТР
.фрагмент(0, 4)
<БР> Нарезать строку, чтобы получить все до'Р'`ул.
+.нарезать(5)
<БР> Добавить остальные строки.Сокращен: с=с[4]=='Р'?С. срез(0,4)+С. нарезать(5):З` [37 байт!] <БР><БР> Демо:
в
в
Это улучшение simpleigh ответ (Убрать длину)
в
в
В C# (Шарп), вы можете сделать пустой символ как '\0'. Может быть, вы можете сделать это:
Поиск на Google или серфинга в интернете и проверить, если JavaScript позволяет сделать пустые символы, как C# работает. Если да, то узнайте, как это сделать, и, возможно, функции replaceAt будет работать наконец-то, и вы'МР достичь того, чего вы хотите!
Наконец, что 'Р' характер будут удалены!