[javascript] 문자열에서 마지막 쉼표 제거

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+)?$/, '');   
}


답변

여기서 멀다

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


답변

크게 공감 된 답변은 마지막 쉼표뿐만 아니라 뒤에 오는 공백도 제거합니다. 그러나 다음 공백을 제거하는 것이 원래 문제의 일부 가 아니 었습니다. 그래서:

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

https://jsfiddle.net/dc8moa3k/


답변

문제는 문자열에서 마지막 쉼표가 아니라면 문자열에서 마지막 쉼표를 제거한다는 것입니다. 따라서 마지막 문자가 ‘인지 확인하고 if 인 경우 변경해야합니다.

편집 : 정말 혼란 스럽습니까?

‘이것은 임의의 문자열입니다’

코드는 문자열에서 마지막 쉼표를 찾아 ‘This’만 저장합니다. 마지막 쉼표는 문자열의 끝이 아닌 ‘This’뒤에 있기 때문입니다.


답변

마지막 쉼표를 제거 할 수 있습니다.

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