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


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

또한 끝에 공백을 제거해야합니까?
Felix Kling

공백 만 있으면 예
AnaMaria

문제가있는 쉼표 앞의 공백은 어떻습니까? 그것들도 제거해야합니까? 이 경우 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

이 입력을 사용하십시오 "이것은 테스트입니다." 이상적으로 출력은 같은 문장이어야하지만 프로그램에서는 "This"로 표시됩니다. 내가 옳다면 내 질문에 +1을 표시하십시오. 내가 잘못하면 귀하의 솔루션 +1을 표시합니다
AnaMaria

http://jsfiddle.net/rpss/3rSNr/ 모든 쉼표 색인을 가져 와서 "currentIndex"에 넣고 루프에서 차례로 교체합니다 (일치하는 패턴을 찾거나 일치하는 경우 색인을 가져옵니다). 마지막으로 그 변수는 마지막 쉼표의 색인으로

:) true, 해당 코드는 마지막 쉼표를 제거하지만 문장 끝의 마지막 쉼표 제거하기를 원했습니다. 거기에 .. 귀하의 질문은 +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

xD 나는 그것을 많이 얻는다. 스크립트는 문자열에서 마지막 코마를 찾아 그 뒤의 모든 것을 제거합니다. 이 경우 쉼표가이 중 '이것은 테스트입니다'와 같이 중간에있는 경우입니다. strng.lastIndexOf ( ",") 명령; 4를 반환하므로 5 번째 문자 이후의 모든 내용이 제거됩니다. 따라서 ","가 나머지를 제거하기 전에 문자열의 마지막 문자인지 확인해야합니다. :)
Hristo Valkanov

1
나는 무슨 뜻인지 이해하고 내가 잘못 가고있는 곳을 얻었다. 그러나 당신은 대답이 더 도움이되지 않기 때문에 주석으로 더 적합합니다. 내가 말한 것을 얻길 바랍니다. 위반 없음
AnaMaria

요청하면 코드를 추가 할 계획 이었지만 바이올린으로 편집 할 때 이미 완벽한 대답이 있음을 알았으므로 그대로 두었습니다. :)
Hristo Valkanov

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.