Bir harfi (:) bir dizgeden kaldır

İsmim var: İsim :, Telefon: .... ve benim masamda. JQuery'yi öğreniyorum ve metne erişebildim. Eğiticim, herhangi bir boşluk bırakmak için trim() kullanmış. Ama her dizenin sonundan ":" 'i kaldırmak istiyorum (ve evet, trim() yöntemini çağırdıktan sonra her zaman sonundadır. Peki bunu nasıl başarabilirim.

Benim kodum:

<script type="text/javascript">
    $(function ()
    {
        $(':input[type=text], textarea').each
    (
    function ()
    {
        var newText = 'Please enter your ' +
    $(this).parent().prev().text().toLowerCase().trim();
        $(this).attr('value', newText);
    }).one('focus', function ()
    {
        this.value = '', this.className = ''
    }).addClass('Watermark').css('width', '300px');
    });
</script>

trim (":") yardımcı olmadı ...

4
Bunu yapmak için jQuery'yi kullanmak istiyorsanız ve her zaman : ise, son karakteri kesebilirsiniz: jQuery kullanarak bir dizgeden son karakteri nasıl silebilirim?> stackoverflow.com/questions/4308934/…
katma yazar wkl, kaynak

10 cevap

Tüm : karakterlerini değiştirebilirsiniz:

var str = '::a:sd:';
str = str.replace(/:/g,'');//str = 'asd';

Ya da kullanışlı bir rtrim() işlevi kullanın:

String.prototype.rtrim = function(character) {
    var re = new RegExp(character + '*$', 'g');
    return this.replace(re, '');
};

var str = '::a:sd:';
str = str.rtrim(':');//str = '::a:sd';
10
katma
Bu kod, son karakterin daima her zaman doğru olmayabilecek bir kolon olacağını varsayar. Bu, takip eden kolonları kırpmaz, sonunda herhangi bir karakteri keser.
katma yazar Peter Olson, kaynak
Düzenlenmiş kod bakın.
katma yazar Blender, kaynak
@Shautieh: Hayır, hala düzeltir: , sadece bir argüman eklemeyi unuttum. Güncellenen kod çalışıyor.
katma yazar Blender, kaynak
Değiştir sadece aşağıdakilerin ilk örneğini alır:
katma yazar Jayendra, kaynak
Hala yanlış. Rtrim fonksiyonunuz herhangi bir argüman almaz, bu yüzden ':' ile çağrılması mantıklı değildir. Ne yapar, varsa, dizenin sonunda yalnızca boşluk karakterlerini (\ s) kaldırır.
katma yazar Shautieh, kaynak
@Blender: argümanı unuttun ve her durumda onun yerine kullandıysanız, hayır: “hala strim:” demedi. Güncellenen kod gerçekten de doğrudur.
katma yazar Shautieh, kaynak
Shautieh doğrudur; Cevabımdaki jsfiddle'a bak.
katma yazar weir, kaynak

Bu durumda sadece eski JavaScript'i kullanın değiştirin veya < kod> substr yöntemleri.

Ayrıca, son karakter olarak iki nokta üst üste işaret eden normal ifadeyi de kullanabilirsiniz (regexp dizesinin sonundaki karakter anchor " $ ").

"hi:".replace(/:$/, "")

hi

"hi".replace(/:$/, "")

hi

"h:i".replace(/:$/, "")

h i

Bu, Blender'ın cevabında rtrim işlevinin basitleştirilmiş, satır içi bir sürümüdür.

DÜZENLEME: İşte Blender düzeltilmiş rtrim işlevi için bir test keman. Dizginin ardışık olarak birden çok örneğiyle bittiğinde, RegExp'in belirtilen karakterin birden fazla örneğini sileceğini unutmayın (örnek aşağıda kalın olarak gösterilmiştir).

http://jsfiddle.net/fGrPb/5/

girdi = ':: a: sd:' çıktı = ':: a: sd'; giriş = 'merhaba:' çıktı = 'merhaba'; girdi = 'hi :::' çıktı = 'selam' ; giriş = 'merhaba' çıktı = 'merhaba'; input = 'h: i' çıktı = 'h: i'

5
katma
katma yazar halfer, kaynak
Teşekkürler; Göndermeden hemen önce bir düzenlemede bağlantı kurdu.
katma yazar weir, kaynak

Bir dizenin son karakterini kesmek için string.slice (0, -1) kullanın.

1
katma

Bu, son karakterin bir kolon olup olmadığını kontrol eder. Öyleyse, son karakter kaldırılır.

if (str[str.length - 1] === ":") {
  str = str.slice(0, -1);
}

Birden çok izlenen noktalı çizgi varsa, ise iken ile şu şekilde değiştirebilirsiniz:

while (str[str.length - 1] === ":") {
  str = str.slice(0, -1);
}

Bir dize ve bir karakteri kabul eden ve bu karakterin sondaki örneklerini düzelten genel bir trim işlevi bile oluşturabilirsiniz:

var trim = function(str, chr) {
  while (str[str.length - 1] === ":") {
    str = str.slice(0, -1);
  }
  return str;
}
0
katma
var a="name:";
var b=a.split(":");
alert(b[0]);
0
katma

You can use a regular expression to remove the colon (:).


Replace one instance:

var with_colon = 'Stuff:';
var regex = /([^:]*):/; 
var without_colon = regex.exec(with_colon)[1];
alert(without_colon);

Result: Stuff


Replace all instances:

var with_colon = 'Stuff: Things:'; 
var without_colon = with_colon.replace(/([^:]*):/g,'$1'); 
alert(without_colon);

Result: Stuff Things

0
katma

one way is to use lastIndexOf

var str='Name:, Call:, Phone:';
var index=str.lastIndexOf(":");
alert(index);
var s=str.substring(0,index);
alert(s);

DEMO

0
katma
Son karakter bir kolon değilse, bu garip bir hataya neden olur. lastIndexOf , karakter bulunamadıysa -1 'i döndürür ve bu, dizenin istenmeyen kesilmesine neden olabilir.
katma yazar Peter Olson, kaynak
 function trim(str) {
       str = str.replace(/^:*/,"");
       return str.replace(/:*$/,"");
 }
0
katma

str = str.substring (0, str.lastIndexOf (":"));

Bunun her şeyi son : dizgesinin sonuna (örneğin : sonra herhangi bir boşluk) kaldıracağını unutmayın.

0
katma
var myStr = "something:";
myStr = myStr.slice(0, -1);
0
katma