从字符串末尾删除最后一个逗号(以及最后一个逗号之后可能的空格)

Remove last comma (and possible whitespaces after the last comma) from the end of a string

本文关键字:最后一个 之后 空格 字符串 删除      更新时间:2023-09-26

使用 JavaScript,如何删除最后一个逗号,但前提是逗号是最后一个字符或逗号后只有空格?这是我的代码。我得到了一个工作小提琴。但它有一个错误。

var str = 'This, is a test.'; 
alert( removeLastComma(str) ); // should remain unchanged
var str = 'This, is a test,'; 
alert( removeLastComma(str) ); // should remove the last comma
var str = 'This is a test,          '; 
alert( removeLastComma(str) ); // should remove the last comma
function removeLastComma(strng){        
    var n=strng.lastIndexOf(",");
    var a=strng.substring(0,n) 
    return a;
}

这将删除最后一个逗号及其后的任何空格:

str = str.replace(/,'s*$/, "");

它使用正则表达式:

  • /标记正则表达式的开始和结束

  • ,与逗号匹配

  • 's表示空格字符(空格、制表符等(,*表示 0 或更多

  • 末尾的$表示字符串的结尾

您可以使用slice

((方法从字符串中删除最后一个逗号,找到以下示例:

var strVal = $.trim($('.txtValue').val());
var lastChar = strVal.slice(-1);
if (lastChar == ',') {
    strVal = strVal.slice(0, -1);
}

下面是一个示例

function myFunction() {
	var strVal = $.trim($('.txtValue').text());
	var lastChar = strVal.slice(-1);
	if (lastChar == ',') { // check last character is string
		strVal = strVal.slice(0, -1); // trim last character
		$("#demo").text(strVal);
	}
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<p class="txtValue">Striing with Commma,</p>
<button onclick="myFunction()">Try it</button>
<p id="demo"></p>

function removeLastComma(str) {
   return str.replace(/,('s+)?$/, '');   
}

如果它有用或更好的方法:

str = str.replace(/('s*,?'s*)*$/, "");

它将替换字符串的所有以下组合结尾:

1. ,<no space>
2. ,<spaces> 
3. ,  ,  , ,   ,
4. <spaces>
5. <spaces>,
6. <spaces>,<spaces>

大赞成的答案不仅删除了最后一个逗号,还删除了后面的任何空格。但是删除这些后续空格并不是原始问题的一部分。所以:

let str = 'abc,def,ghi, ';
let str2 = str.replace(/,(?='s*$)/, '');
alert("'" + str2 + "'");
'abc,def,ghi '

https://jsfiddle.net/dc8moa3k/

删除最后一个逗号。工作示例

function truncateText() {
  var str= document.getElementById('input').value;
  str = str.replace(/,'s*$/, "");
  console.log(str);
}
<input id="input" value="address line one,"/>
<button onclick="truncateText()">Truncate</button>

首先,应该检查最后一个字符是否为逗号。如果存在,请将其删除。

if (str.indexOf(',', this.length - ','.length) !== -1) {
    str = str.substring(0, str.length - 1);
}
注意 str.indexOf(',', this.length - ','.length(

可以简化为 str.indexOf(',', this.length - 1(

长镜头

在这里
var sentence="I got,. commas, here,";
var pattern=/,/g;
var currentIndex;
while (pattern.test(sentence)==true)  {    
  currentIndex=pattern.lastIndex;
 }
if(currentIndex==sentence.trim().length)
alert(sentence.substring(0,currentIndex-1));
else
 alert(sentence);

您可以删除最后一个逗号:

var sentence = "I got,. commas, here,";
sentence = sentence.replace(/(.+),$/, '$1');
console.log(sentence);
删除末尾

的空格和逗号,请使用这个,

var str = "Hello TecAdmin, ";
str = str.trim().replace(/,(?![^,]*,)/, '')
// Output
"Hello TecAdmin"

要从字符串中删除最后一个逗号,即使它后面有字符(这与所询问的字符不同(,您需要

text.replace(/,(?=[^,]*$)/, '')
text.replace(/,(?![^,]*,)/, '')

请参阅正则表达式演示。详情

  • ,(?=[^,]*$) - 一个逗号,紧跟逗号以外的任何零个或多个字符,直到字符串末尾。
  • ,(?![^,]*,) - 一个逗号,后面不紧跟逗号以外的任何零个或多个字符,然后是另一个逗号。

查看 JavaScript 演示:

const text = '1,This is a test, and this is another,  ...';
console.log(text.replace(/,(?=[^,]*$)/, ''));
console.log(text.replace(/,(?![^,]*,)/, ''));

带或不带正则表达式。

我建议两个过程,并考虑删除空间。今天我遇到了这个问题,我通过编写下面的代码来解决这个问题。

我希望这段代码能帮助其他人。

//With the help of Regex
var str = "        I am in Pakistan, I am in India, I am in Japan,     ";
var newstr = str.replace(/[, ]+$/, "").trim();
console.log(newstr);

//Without Regex
function removeSpaceAndLastComa(str) {
  var newstr = str.trim();
  var tabId = newstr.split(",");
  strAry = [];
  tabId.forEach(function(i, e) {
    if (i != "") {
      strAry.push(i);
    }
  })
  console.log(strAry.join(","));
}
removeSpaceAndLastComa(str);

如果您的目标是 es6,那么您可以简单地执行此操作

str = Array.from( str ).splice(0, str.length - 1).join('');
  • 这个Array.from(str)将字符串转换为数组(因此我们可以对其进行切片(

  • splice( 0 , str.length - 1 )返回一个数组,其中按顺序包含数组中的项,但数组中的最后一项除外

  • join('')连接数组中的条目以形成字符串

然后,如果您想确保逗号在执行操作之前实际上结束了字符串,则可以执行以下操作

str = str.endsWith(',') ? Array.from(str).splice(0,str.length - 1).join('') : str;

问题是你删除了字符串中的最后一个逗号,如果它是字符串中的最后一件事,则删除逗号。因此,您应该放置一个if来检查最后一个字符是否为",",如果是,则进行更改。

编辑:真的那么令人困惑吗?

"这,是一个随机字符串">

您的代码从字符串中查找最后一个逗号,并仅存储"This,",

因为最后一个逗号在"This"之后,而不是在字符串的末尾。