Удалить последнюю запятую из строки

Используя JavaScript, как я могу удалить последнюю запятую, но только если запятая - последний символ или есть только пробел после запятой? Это мой код. Я получил рабочую fiddle. Но у него есть ошибка.

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

Ответ 1

После этого будет удаляться последняя запятая и любые пробелы:

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

Он использует регулярное выражение:

  • / отметьте начало и конец регулярного выражения

  • , соответствует запятой

  • \s означает пробельные символы (пробел, табуляция и т.д.) и * означает 0 или более

  • $ в конце означает конец строки

Ответ 2

Вы можете удалить последнюю запятую из строки с помощью метода 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

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

Ответ 4

длинный снимок здесь

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

Ответ 5

Проблема в том, что вы удаляете последнюю запятую в строке, а не запятую, если это последняя вещь в строке. Таким образом, вы должны положить if, если проверить, если последний char is ',' и изменить его, если он есть.

РЕДАКТИРОВАТЬ: Неужели это запутывает?

'Это случайная строка'

Ваш код находит последнюю запятую из строки и сохраняет только "Это", потому что последняя запятая после 'This' не находится в конце строки.

Ответ 6

Вы можете удалить последнюю запятую:

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

Ответ 7

Удалить последнюю запятую. Рабочий пример

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>

Ответ 8

Вы можете удалить последнюю запятую в строке, используя только одну строку в Java

String commaFilterString = yourString.substring(0,yourString.length()-1);

Ответ 9

Поздний ответ, но, вероятно, должен помочь кому-то.

Для удаления любого последнего символа из строки.

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

Ответ 10

Ответ с большим количеством голосов удаляет не только заключительную запятую, но и любые последующие пробелы. Но удаление этих следующих пробелов не было частью первоначальной проблемы. Так:

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

https://jsfiddle.net/dc8moa3k/