Mai mult
Cum pot elimina un personaj dintr-un șir de caractere folosind Javascript?
Sunt atât de aproape de a obține acest lucru, dar e't chiar. Toate, aș dori să face este elimina personajul " r " dintr-un șir. Problema este, există mai mult de un exemplu de " r " în șir. Cu toate acestea, este întotdeauna personajul la index 4 (deci 5 caractere).
exemplu de șir: crt/r2002_2
Ce vreau: crt/2002_2
Acest înlocui funcția elimină atât "r"
mystring.replace(/r/g, '')
Produce: ct/2002_2
Am încercat această funcție:
String.prototype.replaceAt = function (index, char) {
return this.substr(0, index) + char + this.substr(index + char.length);
}
mystring.replaceAt(4, '')
Aceasta funcționează numai dacă l-am înlocui cu un alt personaj. Acesta nu va pur și simplu scoateți-l.
Orice gânduri?
309
17
va înlocui pe
/r
cu"/", folosindString.prototype.replace
.Alternativ, ai putea folosi regex cu un steag globale (cum a sugerat de către Erik Reppen & Sagar Gala, de mai jos) pentru a înlocui toate aparițiile cu
EDIT: Din moment ce toată lumea's având atât de distractiv aici și user1293504 nu't par să revină în orice moment în curând pentru a răspunde la întrebări, aici's o metodă de a elimina N-lea caracter dintr-un șir:
Deoarece user1293504 folosit normal conta în loc de zero indexate conta, ne-am'trebuie să scoateți-1 din index, dacă doriți să utilizați acest pentru a reproduce cât
charAt
lucrări nu scade 1 din indexul pe linia a 3-a și de a folositmp.splice(i, 1)
în loc.Un simplu funcțional javascript cum ar fi
mystring = mystring.split('/r').alăturați-vă('/')
simplu, rapid, înlocuiți la nivel global și nu este nevoie pentru funcții sau prototipuri
Nu's mereu șir de funcții, dacă știi că ai're întotdeauna va elimina cel de-al patrulea personaj:
Prima func este aproape dreapta. Doar elimina 'g' pavilion care vine de la 'global' (editare) și în context la fața locului, cea de-a doua 'r'.
Edit: am't vedea că a fost cea de-a doua 'r' înainte, astfel încât adăugat '/'. Are nevoie de \/ să scape de '/' atunci când se utilizează un regEx arg. Multumesc pentru upvotes dar am fost greșit, așa că am'll fix și se adaugă mai multe detalii pentru cei interesați în a înțelege elementele de bază ale regEx mai bine, dar acest lucru ar funcționa:
Acum, pentru excesivă explicație:
Când citirea/scrierea unui regEx model gândesc în termeni de: <un caracter sau un set de charcters> urmat de <un caracter sau un set de charcters> urmat de <...
În regEx <un caracter sau un set de charcters> ar putea fi unul la un moment dat:
Deci, citiți cum e, urmat de un, urmat de c, etc...
Sau o singur <un caracter sau un set de charcters> ar putea fi personajele descrise de o clasa de caracter:
Sau extins pentru a se potrivi o cantitate de caractere (dar încă cel mai bun de a gândi ca un singur element în termeni de model secvențial):
Deci smoosh o grămadă împreună:
Și, desigur, am'am terminat-elaborat, dar ideea mea era pur și simplu ca acest lucru:
este o serie de 3 elemente de model (un lucru urmat de un lucru urmat de un lucru).
Și așa este:
La fel de traznita ca regEx începe să se uite, totul se reduce la o serie de lucruri (potențial multi-caracter lucruri) după fiecare alte secvențial. Un fel de un punct de bază, dar una care mi-a luat ceva timp sa trec așa că am'am plecat peste bord explice aici cum cred că-l's unul care ar ajuta OP și altele noi pentru regEx înțelege ceea ce's întâmplă. Cheia pentru citirea/scrierea regEx este de rupere-l în jos, în aceste piese.
Pentru global înlocuirea '/r', acest cod a lucrat pentru mine.
Doar repara
replaceAt
:Am'd numesc
removeAt
în loc. :)`char.lungimea este zero. Ai nevoie să adăugați " 1 " în acest caz, în scopul de a sări de caracter.
Acest lucru este pentru că atunci când
char
este egal cu""
, `char.lungimea este 0, deci cuvinte se combina pentru a forma șirul original. Merge cu cod de încercare, următoarelor va funcționa:Crearea funcție de genul de mai jos
Pentru a înlocui da un caracter de mai jos
și pentru a elimina personajul certă la index, dă de-al doilea parametru ca șir gol
Dacă este mereu al 4-lea char în yourString puteți încerca:
Dacă doriți doar pentru a elimina singur caracter și Dacă știi indicele de un personaj pe care doriți să-l eliminați, puteți utiliza următoarele funcții:
Îmi displace folosind înlocui funcția de a elimina caracterele din șir. Acest lucru nu este logic pentru a face asta. De obicei am un program in C# (Ascuțit), și ori de câte ori vreau să-l elimina caracterele din șir, eu folosesc Elimina metoda din clasa String, dar nu Înlocui metoda, chiar dacă ea există, pentru că atunci când sunt pe cale de a elimina, elimina, nu-l înlocuiți. Acest lucru este logic!
În Javascript, nu există nici o scoate funcție de șir, dar nu există funcția substr. Puteți utiliza funcția substr o dată sau de două ori pentru a șterge caracterele din șir. Puteți face următoarele funcția de a elimina caracterele de la început index la sfârșitul șir, la fel ca c# metoda primul suprasarcină Șir.Elimina(int startIndex):
și/sau, de asemenea, puteți face următoarele funcția de a elimina caracterele de la început index și număra, la fel ca în c# metoda a doua de suprasarcină Șir.Elimina(int startIndex, int count):
și apoi, puteți utiliza aceste două funcții sau de unul dintre ei pentru nevoile tale!
Exemplu:
Ieșire: monitoare crt/2002_2
Atingerea obiectivelor de a face tehnici cu nici o logică ar putea duce la confuzii în înțelegerea de cod, și greșelile în viitor, dacă veți face acest lucru o mulțime într-un proiect de mare!
Următoarea funcție a lucrat cel mai bine pentru cazul meu:
Cel mai scurt drum ar fi utilizarea de îmbinare
Puteți folosi acest lucru:
dacă ( str[4] === 'r' ) str = str.felie(0, 4) + str.felie(5)
Explicație:
dacă ( str[4] === 'r' )
<br> Verificați dacă 5-lea caracter este un
'r'`str.felie(0, 4)
Felie șir pentru a obține tot ceea ce înainte de
'r'
+ str.felie(5)
Se adaugă restul de șir.
Minified:
s=s[4]=='r'?s.felie(0,4)+s.felie(5):s
[37 bytes!]DEMO:
Aceasta este o îmbunătățire a simpleigh raspuns (omite lungime)
În C# (Ascuțit), puteți face un gol de caracter ca '\0'. Poate că puteți face acest lucru:
Cauta pe google sau pentru a naviga pe interent și verificați dacă javascript vă permite să facă gol de caractere, cum ar fi C# are. Dacă da, atunci să învețe cum să facă asta, și poate că replaceAt funcția va lucra la ultimul, și te'll obține ceea ce vrei!
În cele din urmă ca 'r' caracterul va fi eliminat!