2011-09-18 21 views
83

Nasıl Javascript kullanarak, argüman olarak iletilen dizeyi argüman olarak belirtilen bir uzunlukta, ayrıca argüman olarak iletilen bir işlevi yapın. Örneğin, örneğin:Javascript bir dize uzunluğu

Fikirleri olan var mı? Alt dizgeyi kullanma hakkında bir şeyler duydum, ancak tam olarak anlamadı.

+0

"Bu" = 7 karakter, bunu mu niyet ettiniz? –

+0

Soruda söylendiği gibi, bunu yapmak için alt dizgiyi nasıl kullanacağımı bilmiyorum. Bana bir örnek verebilir misiniz? İşe yarayacaksa tabii ki bir cevap vereceğim;) @Interstellar_Coder oops, typo! –

cevap

192

Neden alt tabaka kullanmıyoruz? string.substring(0, 7); İlk argüman (0) başlangıç ​​noktasıdır. İkinci argüman (7) bitiş noktasıdır (özel). More info here.

var string = "this is a string"; 
var length = 7; 
var trimmedString = string.substring(0, length); 
bağlantısından
+0

Teşekkürler! Mükemmel çalışıyor. Zaman sınırı geçtikten sonra cevap olarak işaretleyeceğim! –

+13

Ve uzun uzunlukları aşan dizgiler için elipslerin (muhtemelen daha uzun max için daha yararlı) olmasını istiyorsanız: var string = "bu bir dizedir"; var uzunluk = 20; var trimmedString = string.length> uzunluk? string.substring (0, uzunluk - 3) + "...": string.substring (0, uzunluk); – Will

+2

Lütfen string.substr (başlangıç, uzunluk) garip davranır, uzunluk dizenin uzunluğundan daha fazla ise boş döner. string.substring (start, end) beklendiği gibi çalışır, yani verilen uç için yeterli karakter yoksa dizeyi sonuna kadar döndürür! – centic

21

kopyalama bir cevap haline Will's yorum, onu yararlı çünkü:

var string = "this is a string"; 
var length = 20; 
var trimmedString = string.length > length ? 
        string.substring(0, length - 3) + "..." : 
        string; 

teşekkürler Will.

Ve herkes için jsfiddle https://jsfiddle.net/t354gw7e/ :)

+0

Başka bir durumda 'string.substring (0, length)' kullanma noktasında hiçbir nokta yoktur, çünkü dize bu noktada <= 20 karakter olduğu garantilidir, sadece 'string' kullanın . –

+0

Şerefe, cevabı güncelleştiren –

6

Neden bir uzantısını kullanmak umurunda?

String.prototype.trim = function (length) { 
    return this.length > length ? this.substring(0, length) + "..." : this; 
} 

Ve gibi kullanın:

var stringObject= 'this is a verrrryyyyyyyyyyyyyyyyyyyyyyyyyyyyylllooooooooooooonggggggggggggsssssssssssssttttttttttrrrrrrrrriiiiiiiiiiinnnnnnnnnnnnggggggggg'; 
stringObject.trim(25) 

Caution:

standart bir nesnenin .trim() prototipini üzerine yazarak çünkü. Bu, kullanabileceğiniz diğer kitaplıklarda ve araçlarda beklenmedik davranışlara neden olabilir.

+1

Neden değil? Çünkü standart bir nesnenin '.trim()' prototipinin üzerine yazıyorsunuz. Bu, kullanabileceğiniz diğer kitaplıklarda ve araçlarda beklenmedik davranışlara neden olabilir. –

+0

@OlegBerman Elbette, yorumunuzu kaydetti. – xameeramir