Как я могу удалить символ из строки, используя Javascript? - PullRequest
283 голосов
/ 30 марта 2012

Я так близко к этому, но это не правильно.Все, что я хотел бы сделать, это удалить символ «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, '')

Это работает, только если я заменю его другим символом,Это не просто удалит его.

Есть мысли?

Ответы [ 17 ]

1 голос
/ 15 марта 2018

Следующая функция работала лучше всего для моего случая:

public static cut(value: string, cutStart: number, cutEnd: number): string {
    return value.substring(0, cutStart) + value.substring(cutEnd + 1, value.length);
}
1 голос
/ 27 августа 2018

Самый короткий путь - использовать сплайс

var inputString = "abc";
// convert to array and remove 1 element at position 4 and save directly to the array itself
let result = inputString.split("").splice(3, 1).join();
console.log(result);
1 голос
/ 01 апреля 2019

Если вы просто хотите удалить один символ и Если вам известен индекс символа, который вы хотите удалить, вы можете использовать следующую функцию:

/**
 * Remove single character at particular index from string
 * @param {*} index index of character you want to remove
 * @param {*} str string from which character should be removed
 */
function removeCharAtIndex(index, str) {
    return str.substring(0, index - 1) + str.substring(index, str.length)
}
1 голос
/ 20 апреля 2014

Мне не нравится использовать функцию замены для удаления символов из строки. Это не логично делать это так. Обычно я программирую на C # (Sharp), и всякий раз, когда я хочу удалить символы из строки, я использую метод Remove класса String, но не метод Replace, даже если он существует, потому что когда я собираюсь удалить, я удаляю, не заменить. Это логично!

В Javascript нет функции удаления для строки, но есть функция substr. Вы можете использовать функцию substr один или два раза, чтобы удалить символы из строки. Вы можете сделать следующую функцию, чтобы удалить символы в начале индекса до конца строки, так же, как при первой перегрузке метода c # String.Remove (int startIndex):

function Remove(str, startIndex) {
    return str.substr(0, startIndex);
}

и / или вы также можете сделать следующую функцию для удаления символов в начальном индексе и в счетчике, как вторая перегрузка метода c # String.Remove (int startIndex, int count):

function Remove(str, startIndex, count) {
    return str.substr(0, startIndex) + str.substr(startIndex + count);
}

и затем вы можете использовать эти две функции или одну из них для своих нужд!

Пример:

alert(Remove("crt/r2002_2", 4, 1));

Выход: эл. / 2002_2

Достижение целей с помощью техник с без логики может вызвать путаницу в понимании кода и будущие ошибки, если вы сделаете это много в большом проекте!

1 голос
/ 12 января 2019

Вы можете использовать это: if ( str[4] === 'r' ) str = str.slice(0, 4) + str.slice(5)

Пояснение:

  1. if ( str[4] === 'r' )
    Проверьте, является ли 5-ый символ 'r'

  2. str.slice(0, 4)
    Нарезать строку, чтобы получить все до 'r'

  3. + str.slice(5)
    Добавьте остаток строки.

Сокращено: s=s[4]=='r'?s.slice(0,4)+s.slice(5):s [37 байт!]

DEMO:

function remove5thR (s) {
  s=s[4]=='r'?s.slice(0,4)+s.slice(5):s;
  console.log(s); // log output
}

remove5thR('crt/r2002_2')  // > 'crt/2002_2'
remove5thR('crt|r2002_2')  // > 'crt|2002_2'
remove5thR('rrrrr')        // > 'rrrr'
remove5thR('RRRRR')        // > 'RRRRR' (no change)
0 голосов
/ 21 апреля 2014

В C # (Sharp) вы можете сделать пустой символ как '\ 0'.Может быть, вы можете сделать это:

String.prototype.replaceAt = function (index, char) {
return this.substr(0, index) + char + this.substr(index + char.length);
}
mystring.replaceAt(4, '\0')

Выполните поиск в Google или воспользуйтесь поиском в интернете и проверьте, позволяет ли JavaScript создавать пустые символы, как в C #.Если да, то узнайте, как это сделать, и, возможно, наконец-то будет работать функция replaceAt, и вы добьетесь того, чего хотите!

Наконец, символ 'r' будет удален!

0 голосов
/ 10 января 2019

Это улучшение простого ответа (без учета длины)

s.slice(0,4)+s.slice(5)

let s="crt/r2002_2";

let o= s.slice(0,4)+s.slice(5);

let delAtIdx= (s,i) => s.slice(0,i)+s.slice(i+1); // this function remove letter at index i

console.log(o);
console.log(delAtIdx(s,4));
...