Jak usunąć tekst z łańcucha?

577

Mam data-123sznurek.

Jak mogę usunąć data-ciąg, pozostawiając 123?

Michael Grigsby
źródło

Odpowiedzi:

1156

var ret = "data-123".replace('data-','');
console.log(ret);   //prints: 123

Dokumenty


Aby usunąć wszystkie wystąpienia, użyj:

var ret = "data-123".replace(/data-/g,'');

PS: Funkcja replace zwraca nowy ciąg i pozostawia oryginalny ciąg bez zmian, więc użyj wartości zwracanej przez funkcję po wywołaniu replace ().

Matematyka
źródło
Jak zamienić wiele wyrażeń? Czy musisz używać wielu połączeń .replace?
Dror Bar
124

To nie ma nic wspólnego z jQuery. Możesz użyć replacedo tego funkcji JavaScript :

var str = "data-123";
str = str.replace("data-", "");

Możesz także przekazać wyrażenie regularne do tej funkcji. W poniższym przykładzie zastąpiłoby wszystko oprócz cyfr:

str = str.replace(/[^0-9\.]+/g, "");
James Johnson
źródło
Czy możesz wyjaśnić, co robi wyrażenie regularne? Nie rozumiem, dlaczego zastępuje ciąg znaków oprócz liczb, jeśli 0-9zostało to wskazane.
rotimi-best
60

Możesz użyć "data-123".replace('data-','');, jak wspomniano, ale ponieważ replace()tylko zastępuje PIERWSZĄ instancję pasującego tekstu, jeśli łańcuch był podobny do "data-123data-"tego wtedy

"data-123data-".replace('data-','');

zastąpi tylko pierwszy pasujący tekst. I twój wynik będzie"123data-"

PRÓBNY

Jeśli więc chcesz, aby wszystkie dopasowania tekstu zostały zastąpione ciągiem, musisz użyć wyrażenia regularnego z taką gflagą:

"data-123data-".replace(/data-/g,'');

I twój wynik będzie "123"

DEMO2

laaposto
źródło
28

możesz użyć slice (), który zachowuje znaki od początku do końca (dołączony punkt końcowy)

   string.slice(start , end);

oto kilka exmp, aby pokazać, jak to działa:

var mystr = ("data-123").slice(5); // jast define start point so output is "123"
var mystr = ("data-123").slice(5,7); // define start and end  so output is "12"
var mystr=(",246").slice(1); // returens "246"

Próbny

Pan Shojaei
źródło
23

Wystarczy zwykły stary JavaScript - jQuery nie jest konieczne do tak prostego zadania:

var myString = "data-123";
var myNewString = myString.replace("data-", "");

Zobacz: .replace()dokumenty w MDN, aby uzyskać dodatkowe informacje i sposób użycia.

James Hill
źródło
17

Dawny:-

var value="Data-123";
var removeData=value.replace("Data-","");
alert(removeData);

Mam nadzieję, że to zadziała dla ciebie.

Ranjit Kanojia
źródło
11

Byłem przyzwyczajony do metody C # (Sharp) String.Remove. W JavaScript nie ma funkcji usuwania ciągu, ale jest funkcja substr. Możesz użyć funkcji substr raz lub dwa razy, aby usunąć znaki z łańcucha. Można wykonać następującą funkcję, aby usunąć znaki przy indeksie początkowym do końca łańcucha, podobnie jak metoda przeciążająca najpierw metodę C # String.Remove (int startIndex):

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

i / lub możesz również wykonać następującą funkcję, aby usunąć znaki przy indeksie początkowym i policzyć, podobnie jak w przypadku drugiego przeciążenia metody c # String.Remove (int startIndex, int count):

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

a następnie możesz użyć tych dwóch funkcji lub jednej z nich do własnych potrzeb!

Przykład:

alert(Remove("data-123", 0, 5));

Wyjście: 123


źródło
9

Ta mała funkcja, którą stworzyłem, zawsze działała dla mnie :)

String.prototype.deleteWord = function (searchTerm) {
    var str = this;
    var n = str.search(searchTerm);
    while (str.search(searchTerm) > -1) {
        n = str.search(searchTerm);
        str = str.substring(0, n) + str.substring(n + searchTerm.length, str.length);
    }
    return str;
}

// Use it like this:
var string = "text is the the cool!!";
string.deleteWord('the'); // Returns text is cool!!

Wiem, że to nie jest najlepsze, ale zawsze działało dla mnie :)


źródło
W odpowiedzi pokazujesz, w jaki sposób funkcja zamiana łańcucha działa mniej więcej, ale w rzeczywistości użycie funkcji zamiany łańcucha jest znacznie prostsze i łatwiejsze niż Twój!
9
str.split('Yes').join('No'); 

Spowoduje to zastąpienie wszystkich wystąpień tego określonego ciągu od oryginalnego ciągu.

ŁUK
źródło
8

Używanie match()i Number()do zwracania numberzmiennej:

Number(("data-123").match(/\d+$/));

// strNum = 123

Oto, co robi powyższe stwierdzenie ... działające w środku:

  1. str.match(/\d+$/)- zwraca tablicę zawierającą dopasowania do dowolnej długości liczb na końcu str. W takim przypadku zwraca tablicę zawierającą element pojedynczego ciągu ['123'].
  2. Number()- konwertuje go na typ liczbowy. Ponieważ tablica zwrócona z .match()zawiera pojedynczy element Number()zwróci liczbę.
Brett DeWoody
źródło