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   Puan:0 | Katılımcı:0 | Katılımcı : 0
Okunma: 6600
  
 
1 puan 2 puan 3 puan 4 puan 5 puan 6 puan 7 puan 8 puan 9 puan 10 puan

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ş




Yorumlar
Yazan: admin (03 Ocak 2011 Pazartesi)+6   
Zaten kodun çalışır şekli verilmiştir, aldığınız hatayı paylaşırsanız yardımcı olabilirim.
Yazan: hayalci_33 (29 Kasım 2010 Pazartesi)+5   
kodun çalışır şeklini vermeniz mümkün kodu eklediğimde hata veriyor yardımcı olursanız sevinirim
Yorum Ekleme Aparatı
Yorum Eklemek için lütfen sol menuden giris yapınız..
Toplam 2 yorum listelendi.