Vala ile büyük küçük harfe çevirme
Dizge işlemleri çok sık kullanılan işlemlerdendir.
Bir kütükteki dizgeleri küçük harfe ya da büyük harfe çevirmek istiyoruz.
Diyelim ki hem Türkçe kelimeleri hem de yabancı kelimeleri büyük ya da küçük harfe çevirmek istiyoruz.
Aşağıdaki kütüğü kelime.vala ismi ile kaydediniz.
string _kucukHarfeCevir (string cevrilecek, bool _turkceMi)
{
string sonuc = "";
unichar k;
for (int i = 0; cevrilecek.get_next_char(ref i, out k);)
{
if (_turkceMi)
{
if (k.to_string() == "I")
sonuc += "ı";
else
{
k = k.tolower();
sonuc += k.to_string();
}
}
else
{
k = k.tolower();
sonuc += k.to_string();
}
}
return sonuc;
}
string kucukHarfeCevir(string cevrilecek)
{
bool _turkceMi;
if (turkceMi(cevrilecek))
_turkceMi = true;
else
_turkceMi = false;
return _kucukHarfeCevir(cevrilecek, _turkceMi);
}
string _buyukHarfeCevir (string cevrilecek, bool _turkceMi)
{
string sonuc = "";
unichar k;
for (int i = 0; cevrilecek.get_next_char(ref i, out k);)
{
if (_turkceMi)
{
if (k.to_string() == "ı")
sonuc += "I";
else
{
k = k.toupper();
sonuc += k.to_string();
}
}
else
{
k = k.toupper();
sonuc += k.to_string();
}
}
return sonuc;
}
string buyukHarfeCevir(string cevrilecek)
{
bool _turkceMi;
if (turkceMi(cevrilecek))
_turkceMi = true;
else
_turkceMi = false;
return _buyukHarfeCevir(cevrilecek, _turkceMi);
}
string _ilkHarfiBuyuk (string kelime, bool _turkceMi)
{
string sonuc = "";
unichar karakter = 0;
int sira = 0;
for (int sayac = 0; kelime.get_next_char(ref sira, out karakter); sayac++)
{
if (sayac == 0)
{
karakter = karakter.toupper();
sonuc += karakter.to_string();
}
else
{
if (_turkceMi)
{
if (karakter.to_string() == "I")
sonuc += "ı";
else
{
karakter = karakter.tolower();
sonuc += karakter.to_string();
}
}
else
{
karakter = karakter.tolower();
sonuc += karakter.to_string();
}
}
}
return sonuc;
}
string ilkHarfiBuyuk (string kelime)
{
bool _turkceMi;
if (turkceMi(kelime))
_turkceMi = true;
else
_turkceMi = false;
string[] parcalar = kelime.split(" ");
if (parcalar.length > 1)
{
string sonuc = "";
for (int i = 0; i < parcalar.length; ++i)
{
parcalar[i] = parcalar[i].strip();
sonuc += _ilkHarfiBuyuk(parcalar[i], _turkceMi);
if (i != parcalar.length - 1)
sonuc += " ";
}
return sonuc;
}
else
return _ilkHarfiBuyuk(kelime, _turkceMi);
}
bool turkceMi (string metin)
{
string alfabe = "çÇİıŞşüÜğĞ";
for (int i=0; i < metin.char_count(); i++)
{
string karakter =
metin.get_char(metin.index_of_nth_char(i)).to_string();
if (alfabe.contains(karakter))
{
return true;
}
}
return false;
}
void yazdir (string yazilacak)
{
stdout.printf(yazilacak + "\n");
}
int main()
{
string[] cumleler = {};
cumleler += "İZMİR ÜZÜMLERİ ÇORBAYA KATILIR MI?";
cumleler += "IZMIR UZUMLERI CORBAYA KATILIR MI";
cumleler += "BİR TAS HAS HOŞAF";
cumleler += "BIR TAS HAS HOSAF";
cumleler += "bir başka saat alalım";
cumleler += "İZMİR";
cumleler += "ÇaĞımızda çoRba İçmek Üzüm yemek";
cumleler += "IRELAND IRAQ";
cumleler += "Isparta halısını kuru temizlemeye verelim";
foreach (string cumle in cumleler)
{
yazdir (buyukHarfeCevir(cumle));
yazdir (kucukHarfeCevir(cumle));
yazdir (ilkHarfiBuyuk(cumle));
}
return 0;
}
Uygulamayı
valac kelime.vala -o kelime
komutu ile derleyebilirsiniz.
Çalıştırmak için ./kelime yazmanız yeterlidir.
Uygulamayı çalıştırdığınızda Türkçe ya da yabancı metin içeren dizgeleri büyük küçük harf yaptığını görebilirsiniz.
Yorumlar