Hapus Koma Terakhir dari sebuah string

139

Menggunakan JavaScript, bagaimana saya bisa menghapus koma terakhir, tetapi hanya jika koma adalah karakter terakhir atau jika hanya ada spasi putih setelah koma? Ini kode saya. Saya punya biola bekerja . Tetapi memiliki bug.

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;
}
AnaMaria
sumber
Haruskah juga menghapus spasi di akhir?
Felix Kling
jika hanya ruang kosong, ya
AnaMaria
Bagaimana dengan spasi sebelum koma yang dimaksud? Haruskah itu dihapus juga? dalam hal ini: str = str.replace (/, \ s * $ /, ""); akan menjadi str = str.replace (/ \ s *, \ s * $ /, "");
Amitabh

Jawaban:

391

Ini akan menghapus koma terakhir dan spasi putih setelahnya:

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

Ini menggunakan ekspresi reguler:

  • The /tanda awal dan akhir dari ekspresi reguler

  • The ,cocok koma

  • The \sberarti spasi karakter (spasi, tab, dll) dan *sarana 0 atau lebih

  • Di $bagian akhir menandakan bagian akhir dari string

Jon
sumber
Gunakan str.replace (/, + / g, ","). Ganti (/ (, \ s * $) | (^, *) /, ""); jika Anda ingin menghapus koma kosong awal atau, koma ganda, contoh ",, 8,, 7" akan menjadi "8,7"
Miguel
@ParkashKumar Jon telah menyebutkan tentang yang terakhir /. The / mark the beginning and end of the regular expression.
Asif Ali
Terima kasih banyak.
Alok Ranjan
13

Anda dapat menghapus koma terakhir dari sebuah string dengan menggunakan metode slice (), temukan contoh di bawah ini :

var strVal = $.trim($('.txtValue').val());
var lastChar = strVal.slice(-1);
if (lastChar == ',') {
    strVal = strVal.slice(0, -1);
}

Ini sebuah contoh

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>

e-techpulse
sumber
9
function removeLastComma(str) {
   return str.replace(/,(\s+)?$/, '');   
}
Daniel Sloof
sumber
3

tembakan panjang di sini

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

sumber
Meskipun pertanyaannya sudah dijawab, saya tertarik dengan solusi Anda dan memutuskan untuk menguji. Sayangnya, itu tidak berhasil :(
AnaMaria
Gunakan input ini "Ini, ini ujian." Idealnya output harus kalimat yang sama tetapi dalam program Anda itu memberikannya sebagai "Ini". Jika saya benar maka tandai +1 pertanyaan saya. Jika saya salah saya akan menandai solusi Anda +1
AnaMaria
http://jsfiddle.net/rpss/3rSNr/ Semua indeks koma diambil dan dimasukkan ke dalam "currentIndex" menggantikan satu demi satu dalam satu lingkaran (menguji pola pencocokan dan mengambil indeks ketika kecocokan ditemukan). akhirnya variabel tersebut dibiarkan dengan indeks koma terakhir
:) benar, kode itu akan menghapus koma terakhir, tetapi Anda ingin koma terakhir di akhir kalimat dihapus, di sana..di sana .. pertanyaan Anda ditandai +1
Tidak persis. Anda melewatkan bagian ini "tetapi hanya jika koma adalah karakter terakhir atau jika hanya ada spasi putih setelah koma"
AnaMaria
3

Jawaban yang sangat tervotitasi menghilangkan tidak hanya koma terakhir, tetapi juga ruang yang mengikuti. Tetapi menghilangkan ruang-ruang berikut ini bukanlah bagian dari masalah aslinya. Begitu:

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

https://jsfiddle.net/dc8moa3k/

Booboo
sumber
1

Masalahnya adalah Anda menghapus koma terakhir dalam string, bukan koma jika itu adalah hal terakhir dalam string. Jadi, Anda harus meletakkan tanda "if" untuk memeriksa apakah karakter terakhir adalah "," dan mengubahnya jika ya.

EDIT: Apakah ini benar-benar membingungkan?

'Ini, adalah string acak'

Kode Anda menemukan koma terakhir dari string dan hanya menyimpan 'Ini,' karena, koma terakhir adalah setelah 'Ini' bukan di akhir string.

Hristo Valkanov
sumber
9
Jawaban Anda lebih membingungkan daripada pertanyaan. Maaf karena sangat jujur
AnaMaria
xD saya mendapatkan itu banyak. Script Anda menemukan koma terakhir dalam string dan menghapus semuanya setelahnya. Dalam hal itu jika koma ada di tengah seperti di yang ini 'Ini, adalah ujian.' perintah strng.lastIndexOf (","); akan mengembalikan 4, dengan demikian menghapus semuanya setelah huruf ke-5. Jadi, Anda harus memeriksa apakah "," adalah huruf terakhir dari string sebelum menghapus sisanya :)
Hristo Valkanov
1
Saya mengerti apa yang Anda maksud dan saya mendapatkan di mana saya salah. Tetapi jawaban Anda lebih cocok sebagai komentar karena tidak banyak membantu saya. Semoga Anda mengerti apa yang saya katakan. No offense
AnaMaria
Saya berencana untuk menambahkan kode juga jika diminta tetapi setelah mengedit biola saya melihat bahwa sudah ada jawaban yang sempurna jadi saya meninggalkannya seperti itu. :)
Hristo Valkanov
1

Anda dapat menghapus koma terakhir:

var sentence = "I got,. commas, here,";
sentence = sentence.replace(/(.+),$/, '$1');
console.log(sentence);
Trai Hải Phòng
sumber
1

Hapus koma terakhir. Contoh kerja

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>

Deepu Reghunath
sumber
1

Pertama, seseorang harus memeriksa apakah karakter terakhir adalah koma. Jika ada, hapus.

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

CATATAN str.indexOf (',', this.length - ','. Length) dapat disederhanakan menjadi str.indexOf (',', this.length - 1)

Max Alexander Hanna
sumber