J'ai besoin de supprimer le dernier mot après la virgule dans une chaîne.

Par exemple, j'ai une chaîne comme ci-dessous

var text = "abc, def, gh";

Je veux supprimer gh dans cette chaîne

J'ai essayé comme ci-dessous

var text = "abc, def, gh";
var result = text.split(",");
var get = result.substring(-1, result.length);
alert(get);

Mais je reçois une erreur

Impossible de lire la propriété 'split' d'undefined

Aidez-moi, s'il vous plaît.

3
VinoCoder 30 déc. 2017 à 08:57

6 réponses

Meilleure réponse

Vous pouvez y parvenir en utilisant des opérations de tableau:

var text = "abc, def, gh";
//create the array 
var resArray = text.split(",");
//remove last element from array
var poppedItem = resArray.pop();
//change the final array back to string
var result = resArray.toString();
console.log(result);

Ou vous pouvez le faire par des opérations de chaîne:

var text = "abc, def, gh";
//find the last index of comma
var lastCommaIndex = text.lastIndexOf(",");
//take the substring of the original string
var result = text.substr(0,lastCommaIndex);
console.log(result);
3
Ankit Agarwal 30 déc. 2017 à 06:05

Ici, j'utilise les méthodes lastIndexOf() et substring(). substring() est utilisé pour collecter la chaîne de l'index Oth jusqu'au dernier espace vide.

<html>
<head>
    <script>
        function myFunction() {
            var str = "abc, def, gh";
            var lastIndex = str.lastIndexOf(" ");
            str = str.substring(0, lastIndex);
            document.getElementById("myText").innerHTML = str;
        }
    </script>
</head>
<body onload="myFunction()">
    <h1>the value of string is now:  <span id="myText"></span></h1>
</body>    
1
Thiago Elias 30 déc. 2017 à 18:52

Nous pouvons résoudre cela en utilisant une regex sans groupe de capture:

var text = "abc, def, gh";
text = text.replace(/(?=,[^,]*$).*/, "");
console.log(text);

Cette regex supprime stratégiquement juste le dernier mot de la liste CSV.

Voici une variante de ce qui précède qui utilise un groupe de capture:

text = text.replace(/(.*),.*/, "$1");
console.log(text);
0
Tim Biegeleisen 30 déc. 2017 à 06:16

Split retourne un tableau, vous devez le découper / pop car la sous-chaîne est une propriété d'une chaîne, ou vous pouvez utiliser regex comme autres mentions.

var text = "abc, def, gh";
var result = text.split(",");
var get = result.slice(0, result.length-1);
// or var get = result.pop();
alert(get);
1
Fisherman 30 déc. 2017 à 07:10

Essaye ça,

var str = "abc, def, gh";

var result = str.substring(0, str.lastIndexOf(","));

alert(result);
1
Subash 30 déc. 2017 à 06:06
var text = "abc, def, gh";
var str=text.replace(/(.*),.*/, "$1");
alert(str);
3
Farhad Bagherlo 30 déc. 2017 à 06:05