文字列から最後のカンマを削除する


139

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

最後のスペースも削除する必要がありますか?
フェリックスクリング2013

唯一の空白スペースの場合、はい
AnaMaria 2013

問題のカンマの前のスペースはどうですか?それらも削除する必要がありますか?その場合:str = str.replace(/、\ s * $ /、 ""); str = str.replace(/ \ s *、\ s * $ /、 "");になります。
Amitabh

回答:


391

これにより、最後のコンマとその後の空白が削除されます。

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

それは正規表現を使用します:

  • /正規表現の始まりと終わりのマーク

  • ,カンマにマッチします

  • \s手段空白文字(スペース、タブなど)および*手段0以上

  • $最後には、文字列の終わりを意味します


str.replace(/、+ / g、 "、")。replace(/(、\ s * $)|(^、*)/、 "");を使用します。最初の空のコンマまたはダブルコンマを削除する場合、例 ",, 8、、7"は "8,7"になります
Miguel

@ParkashKumar Jonはすでに最後について述べました/The / mark the beginning and end of the regular expression
Asif Ali

とても役に立ちます。
Alok Ranjan

13

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>



3

ここでロングショット

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

質問にはすでに回答していますが、私はあなたの解決策に興味をそそられ、テストすることにしました。残念ながら、これは機能しません:(
AnaMaria 2013

この入力「これはテストです」を使用します。理想的には、出力は同じ文である必要がありますが、プログラムでは "This"と表示されます。私が正しい場合は、質問に+1を付けます。私が間違っている場合、私はあなたのソリューションに+1とマークします
AnaMaria 2013

http://jsfiddle.net/rpss/3rSNr/ すべてのコンマのインデックスがフェッチされ、ループ内で次々と置き換えられて「currentIndex」に入れられます(一致するパターンをテストし、一致が見つかったときにインデックスをフェッチします)。最後に、その変数には最後のコンマのインデックスが残ります

:) true、そのコードは最後のカンマを削除しますが、文の最後にある最後のカンマ削除したいのですが、そこに..there ..質問のマークは+1

ではない正確に。この部分を見逃しました "ただし、コンマが最後の文字である場合、またはコンマの後に空白のみがある場合のみ"
AnaMaria

3

大きく賛成された答えは、最後のコンマだけでなく、その後に続くスペースも削除します。しかし、次のスペースを削除することは、元の問題の一部ではありませんでした。そう:

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

https://jsfiddle.net/dc8moa3k/


1

問題は、文字列の最後のコンマではなく、文字列の最後のコンマを削除することです。したがって、最後の文字が「、」であるかどうかを確認するためにifを挿入し、そうである場合は変更する必要があります。

編集:本当に混乱していますか?

「これはランダムな文字列です」

コードは文字列から最後のカンマを見つけ、「This、」のみを保存します。これは、最後のカンマが文字列の最後ではなく「This」の後にあるためです。


9
あなたの答えは質問よりも混乱します。残酷に正直になって申し訳ありません
AnaMaria 2013

xD私はそれをたくさん手に入れました。スクリプトは、文字列の最後のコマを見つけ、その後のすべてを削除します。その場合、このような「これはテストです」のようにコンマが途中にある場合。コマンドstrng.lastIndexOf( "、"); 4を返すため、5番目の文字以降はすべて削除されます。したがって、残りを削除する前に、「、」が文字列の最後の文字であるかどうかを確認する必要があります:)
Hristo Valkanov

1
私はあなたが何を意味するのか理解し、私が間違っていたところを手に入れました。しかし、あなたの答えはあまり役に立たなかったので、コメントとしてより適しています。あなたが私が言っていることを理解してほしい。違反なし
AnaMaria 2013

リクエストがあればコードも追加するつもりでしたが、フィドルで編集したところ、すでに完璧な答えがあることがわかりましたので、そのままにしておきました。:)
Hristo Valkanov 2013

1

最後のカンマを削除できます:

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

1

最後のカンマを削除します。実施例

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>


1

最初に、最後の文字がカンマかどうかを確認する必要があります。存在する場合は削除してください。

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

str.indexOf( '、'、this.length-'、'。length)は、str.indexOf( '、'、this.length-1)に簡略化できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.