Πώς μπορώ να αφαιρέσω έναν χαρακτήρα από μια συμβολοσειρά χρησιμοποιώντας 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, '')

Λειτουργεί μόνο αν το αντικαταστήσω με έναν άλλο χαρακτήρα. Δεν θα τον αφαιρέσει απλά.

Καμία σκέψη;

var mystring = "crt/r2002_2";
mystring = mystring.replace('/r','/');

θα αντικαταστήσει το /r με το / χρησιμοποιώντας το String.prototype.replace.

Εναλλακτικά θα μπορούσατε να χρησιμοποιήσετε regex με μια παγκόσμια σημαία (όπως προτείνεται από τον Erik Reppen & Sagar Gala, παρακάτω) για να αντικαταστήσετε όλες τις εμφανίσεις με

mystring = mystring.replace(/\/r/g, '/');

EDIT: Αφού όλοι διασκεδάζουν τόσο πολύ εδώ και ο user1293504 δεν φαίνεται να επιστρέφει σύντομα για να απαντήσει σε διευκρινιστικές ερωτήσεις, ορίστε μια μέθοδος για την αφαίρεση του Ν-οστού χαρακτήρα από μια συμβολοσειρά:

String.prototype.removeCharAt = function (i) {
    var tmp = this.split(''); // convert to an array
    tmp.splice(i - 1 , 1); // remove 1 element from the array (adjusting for non-zero-indexed counts)
    return tmp.join(''); // reconstruct the string
}

console.log("crt/r2002_2".removeCharAt(4));

Δεδομένου ότι ο χρήστης1293504 χρησιμοποίησε την κανονική καταμέτρηση αντί για μηδενική καταμέτρηση, πρέπει να αφαιρέσουμε το 1 από το δείκτη, αν θέλετε να χρησιμοποιήσετε αυτό για να αναπαράγετε τον τρόπο με τον οποίο λειτουργεί το charAt μην αφαιρέσετε το 1 από το δείκτη στην 3η γραμμή και χρησιμοποιήστε το tmp.splice(i, 1) αντί αυτού.

Σχόλια (1)

Υπάρχουν πάντα οι συναρτήσεις συμβολοσειρών, αν ξέρετε ότι θα αφαιρείτε πάντα τον τέταρτο χαρακτήρα:

str.slice(0, 4) + str.slice(5, str.length))
Σχόλια (2)
return this.substr(0, index) + char + this.substr(index + char.length);

char.length είναι μηδέν. Πρέπει να προσθέσετε 1 σε αυτή την περίπτωση για να παραλείψετε χαρακτήρα.

Σχόλια (7)