从字符串末尾删除最后一个逗号(以及最后一个逗号之后可能的空格)
Remove last comma (and possible whitespaces after the last comma) from the end of a string
使用 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 或更多末尾的
$
表示字符串的结尾
((方法从字符串中删除最后一个逗号,找到以下示例:
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"之后,而不是在字符串的末尾。
- 正则表达式删除最后一个数字之后的字符串
- 使用 jQuery 在最后一个图像之后附加 HTML
- 如何在Javascript中的对象数组的最后一个对象之后附加几个新对象
- 打印regex之后的最后一个字符
- Skrollr:当滚动位置在最后一个关键帧之后时传递函数
- 匹配最后一个点之后的文本字符串
- 最后一个斜杠 JavaScript RegEx 之后的所有字符
- 确保 JavaScript 中 shuffle 之后的第一个元素与上一个 shuffle 中的最后一个元素不同
- Javascript 在最后一个斜杠 / 之后替换 href 的某些字符
- 如何在 {{#each}} 循环中的元素之间添加分隔符,最后一个元素之后除外
- 如何在 JavaScript 中获取最后一个特定字符之后的子字符串
- jQuery 在最后一个元素之后插入
- 获取字符串中最后一个“-”之后的所有字符
- 在*最后一个*CSS3转换之后,事件处理的稳健方式
- 从字符串末尾删除最后一个逗号(以及最后一个逗号之后可能的空格)
- 为什么我在循环之后只得到最后一个id道具
- Javascript RegExp 在 / 之后获取第二个也是最后一个字符串
- regex匹配第一个字符之前和最后一个字符之后的空格或符号之间的字符串
- 替换URL中最后一个字符之后的所有内容
- 插入在第一个之前和最后一个之后