|
ASP: Boşluksuz(Space) Uzun Kelimeleri Bölme - ASP Webmaster bilgi bankası, knowledge base Webmaster Araçları
AnaSayfa > ASP > ASP: Boşluksuz(Space) Uzun Kelimeleri Bölme |
| Kategori | : ASP | Gönderen | : Admin | Tarih | : 2008-12-07 | Puan | : 0 | Katılımcı : 0 | Okunma | : 6783 | | | |
| | HTML de bolca kullandığımız tabloların "width" diye bir parametresi vardır.Genişliği belirler.Fakat genişlik verilen tabloda kelimeler arası boşluk yoksa bu width değerine aldırmaksızın tablo genişler ona bağlı diğer tasarım öğeleride konum değiştirir.
_______________
| |
|______________| Bu tabloya width="100" değeri verildiğini düşünelim şayet içerisine normal kelimeler yazdığımız vakit sadece aşağı doğru itileme eyilimine gidecektir
_______________
| wmaraclari |
| sitesine hoş |
| geldiniz... |
|______________| yan yana sığabilen kelimeler sığacak diğerleri aşağı itilecektir.Bu normal olası ve olması gereken durumdur.Ancak bu yazıyı şayet biz yazdı isek duruma müdahale etmemiz kolay.Peki kullanıcı yorumu / yazısı gibi sitede yayınladığımız alanlarda bahsettiğimiz olay gelişirse? çünkü kendi insiyatifimizde olmayan bir durumdur.
______________________________________________________________________________________
| sizleriçokseeeeeeeeeevvvvvvvvvvvvvviiiiiiiiiiiiiiiiiiiiiiiiiyyyyyyyyyyyyyyoooooooooorrrrrruuuzz!.. |
|_____________________________________________________________________________________| gibi bir kullanıcı yorumuna yazısına kullanığımız tablomuz genişliği 100px olmasına rağmen genişleyecektir ve tasarımı bozacaktır.İşte bu durumlar için
kelimeyi parçalayacak hali hazırda bir sisteme ihtiyaç duyarız.
<%
Sub UzunCumle(strVeri,karakterMiktari)
karakter_uzunlugu = karakterMiktari
kelimeler = Split(strVeri)
For i = 0 To Ubound(kelimeler)
If Len(kelimeler(i)) > karakter_uzunlugu Then
kac_parca = Len(Kelimeler(i)) / karakter_uzunlugu
For j = 1 To CInt(kac_parca)
If Len(kelimeler(i)) > karakter_uzunlugu Then
strKelimeParcalari = Mid(kelimeler(i),1,karakter_uzunlugu)
fark = Len(kelimeler(i)) - karakter_uzunlugu
kelimeler(i) = Right(kelimeler(i),CInt(fark))
Response.Write strKelimeParcalari & " "
End If
Next
Response.Write kelimeler(i)&" "
Else
Response.Write (kelimeler(i))&" "
End If
Next
End Sub
cumle = "şimdi bu bir kadirdoganmaxiaspkarakterbolmeversionbirnokt
aikidegisikasdljasdlkjasldkjaslkjasdlkajslkdajsd
lkasjdlkasjdlkasjdlkaoıuhaklhfkajhfkjashfkjashfk
jahskjdhaskjdhakjhdkaliklazimbunasonrotusden
emetamikikatiolduğundavetastigindadaaynisonu
cudonduruyor olsa sonuç olarak ne dönecek"
UzunCume(cumle)
%>
Şimdi alt yordamımız 2 adet parametre almaktadır birisi uzuuuuuuuun şekilde yazılan string yapıyı ve bu uzun şekilde gönderilmiş stringi kaçarlık dilimlere bölceğimizi belirten karakterMiktarı.
Değerleri alt yordama gönderdikten sonra yapılan ilk işlem gelen string yapıyı boşluklara göre bölmek
kelimeler = Split(strVeri)
kelimeleri boşluklara göre bölmek demek tek tek string içerisindeki kelimeleri elde etmek demek.Ve daha sonraki işlem bu oluşan kelime kadar yapı içerisinde dönmek ve tek tek kelimelerin istenilen uzunlukta olup olmadığını kontrol etmek
For i = 0 To Ubound(kelimeler)
If Len(kelimeler(i)) > karakter_uzunlugu Then
.Şayet kelimenin karakter sayısı parametre olarak gönderilen karakter_uzunlugundan büyükse asıl işlemimiz olan kesme biçme başlayacaktır.değilse kelime aynen response.write ile basılacaktır ekrana.
kac_parca = Len(Kelimeler(i)) / karakter_uzunlugu
kac_parca değişkenimiz istenilen uzunluktan ne kadar fazlalığı var onu tesbit etmek için kullandığımız ara değişkendir.
örneğin sizleriçokseeeeeeeeeevvvvvvvvvvvvvviiiiiiiiiiiiiiiiiiiiiiiiiyyyyyyyyyyyyyyoooooooooorrrrrruuuzz!.. 98 karakterdir.Bu kelime eğer 25 karakterlik dilimlere bölünmek istenmişse
98/25 = 3.92 onunda Cint değerini aldığımız için 4 elde edilecektir.
elde ettiğimiz değer bu uzun kelime için kaç defa bölme işlemi yapacağımızı bildiren sayıdır.o nedenle bu değer kadar ikinci bir for döngüsü kuruyoruz
For j = 1 To CInt(kac_parca)
If Len(kelimeler(i)) > karakter_uzunlugu Then
Ve bu sefer kelime için her bir seferinde 25 ten büyükmü diye kontrol ediyoruz.Bunun nedeni ise her zaman 25 in katları şeklinde bölüm sonrası karakter kalmayacaktır.Örneğimizde 3 sefer 25 karakter bölümleme yaparken en son parça için 23 karakter kalmaktadır.
strKelimeParcalari = Mid(kelimeler(i),1,karakter_uzunlugu)
fark = Len(kelimeler(i)) - karakter_uzunlugu
kelimeler(i) = Right(kelimeler(i),CInt(fark))
Response.Write strKelimeParcalari & " "
Asıl işlevi üstlenen bu kodlar ise kelimeden 25 karateri çıkartır ve çıkartılan karakter dizesinide tekrar o stringten eksiltir.Ve böylelikle sonuç olarak
sizleriçokseeeeeeeeeevvvv vvvvvvvvvviiiiiiiiiiiiiii iiiiiiiiiiyyyyyyyyyyyyyyo ooooooooorrrrrruuuzz!.. gibi aralarında birer boşluk olan ve sığmadığı taktirde tablodan aşağıya itilebilekcek kelimeler elde etmiş oluruz.
Ve işte bu kadar yazıdan sonra :) canlı kanlı örneğimiz bizzat bu site.Bakın kenarlara nasılda genişledi.Yani aslında bunu engelledik ama yazıda örnek maksatlı bir seferliğine böyle bıraktık :) .Terzi kendi söküğünü dikemezmiş
|
|