簡體   English   中英

從字符串中刪除最后一個逗號

[英]Remove Last Comma from 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 或更多

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

您可以使用 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/

在這里遠射

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);

刪除最后一個逗號。 工作示例

 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)

問題是您刪除了字符串中的最后一個逗號,而不是逗號,如果它是字符串中的最后一個。 所以你應該放一個 if 來檢查最后一個字符是否是',',如果是,就改變它。

編輯:真的那么令人困惑嗎?

'這是一個隨機字符串'

您的代碼從字符串中找到最后一個逗號並僅存儲 'This, ',因為最后一個逗號在 'This' 之后而不是字符串的末尾。

答案遲到但可能應該幫助某人。

用於從字符串中刪除任何最后一個字符。

 var str = "one, two, three,"; var str2 = str.substring(0, str.length - 1); alert(str); alert(str2); 

有或沒有正則表達式。

我建議兩個過程,並且還考慮刪除空間。 今天我遇到了這個問題,我通過編寫以下代碼解決了這個問題。

我希望這段代碼對其他人有所幫助。

 //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;

要從字符串中刪除最后一個逗號,您需要

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

請參閱正則表達式演示 詳情

  • ,(?=[^,]*$) - 一個逗號,后面緊跟除逗號之外的任何零個或多個字符,直到字符串結尾。
  • ,(?![^,]*,) - 一個逗號,其后不緊跟任何零個或多個字符,除了一個逗號,然后是另一個逗號。

請參閱 JavaScript 演示:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM