programing

문자열 끝에서 마지막 쉼표(및 마지막 쉼표 뒤에 공백이 있을 수 있음) 제거

javamemo 2023. 8. 13. 09:03
반응형

문자열 끝에서 마지막 쉼표(및 마지막 쉼표 뒤에 공백이 있을 수 있음) 제거

자바스크립트를 사용하여 쉼표가 마지막 문자이거나 쉼표 뒤에 공백만 있는 경우에만 마지막 쉼표를 제거하려면 어떻게 해야 합니까?이건 내 코드야.저는 을 하고 있어요.하지만 그것은 벌레가 있습니다.

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/

마지막 쉼표를 제거합니다.작업 예제

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)로 단순화할 수 있습니다.

여기서 멀리 떨어진 곳에

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

마지막에 공백을 제거하고 쉼표를 사용합니다.

var str = "Hello TecAdmin, ";
str = str.trim().replace(/,(?![^,]*,)/, '')
// Output
"Hello TecAdmin"

문자열 뒤에 문자가 있더라도 문자열에서 마지막 쉼표를 제거하려면 다음과 같이 하십시오(요청한 문자와 다름).

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

정규식 데모를 참조하십시오.세부 정보:

  • ,(?=[^,]*$)문자열의 끝까지 쉼표가 아닌 0자 이상의 문자로 바로 이어지는 쉼표입니다.
  • ,(?![^,]*,)쉼표와 다른 쉼표를 제외한 0자 이상의 문자로 바로 이어지지 않는 쉼표입니다.

JavaScript 데모를 참조하십시오.

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

정규식이 있든 없든.

저는 두 가지 프로세스를 제안하고 공간 제거도 고려합니다.오늘 이 문제가 발생하여 아래 코드를 작성하여 수정하였습니다.

저는 이 코드가 다른 사람들에게 도움이 되기를 바랍니다.

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

문제는 문자열의 마지막 쉼표를 제거하는 것이지 문자열의 마지막 쉼표를 제거하는 것이 아니라는 것입니다.그래서 마지막 문자가 ','인지 확인하려면 if를 넣고, ','이면 변경해야 합니다.

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

'이것은 임의의 문자열입니다.'

코드는 문자열에서 마지막 쉼표를 찾고 'This'만 저장합니다. 왜냐하면 마지막 쉼표는 문자열 끝에 있는 'This' 뒤에 있기 때문입니다.

언급URL : https://stackoverflow.com/questions/17720264/remove-last-comma-and-possible-whitespaces-after-the-last-comma-from-the-end-o

반응형