Actionscrtipt 3.0 Türkçe A-Z a-z Sort
Aytekin Meral Tarih: 13/06/2011 Yorum: 2 adet
Okunma : 2189 Tutanlar: Bu yazıyı 1 kişi tuttu.
Selamlar, belki daha optimize edilebilir ama şimdilik böyle. daha iyi bir fikri olan paylaşırsa güncelleyebiliriz.
package com.aytekinmeral.utils
{
/**
* ...
* @author Aytekin Meral
*/
public class TurkishSort
{
public static function turkishSort(temp:Array):Array
{
var len:int = temp.length;
for (var i:int = 0; i<len; i++)
{
switch(String(temp[i]).charAt(0))
{
case "Ş":
temp[i] = "SZ|"+String(temp[i]).substring(1, String(temp[i]).length);
break;
case "Ğ":
temp[i] = "GZ|"+String(temp[i]).substring(1, String(temp[i]).length);
break;
case "Ç":
temp[i] = "CZ|"+String(temp[i]).substring(1, String(temp[i]).length);
break;
case "İ":
temp[i] = "IZ|"+String(temp[i]).substring(1, String(temp[i]).length);
break;
case "Ö":
temp[i] = "OZ|"+String(temp[i]).substring(1, String(temp[i]).length);
break;
case "Ü":
temp[i] = "UZ|"+String(temp[i]).substring(1, String(temp[i]).length);
break;
case "ş":
temp[i] = "sz|"+String(temp[i]).substring(1, String(temp[i]).length);
break;
case "ğ":
temp[i] = "gz|"+String(temp[i]).substring(1, String(temp[i]).length);
break;
case "ç":
temp[i] = "cz|"+String(temp[i]).substring(1, String(temp[i]).length);
break;
case "ı":
temp[i] = "hz|"+String(temp[i]).substring(1, String(temp[i]).length);
break;
case "ö":
temp[i] = "oz|"+String(temp[i]).substring(1, String(temp[i]).length);
break;
case "ü":
temp[i] = "uz|"+String(temp[i]).substring(1, String(temp[i]).length);
break;
}
}
temp.sort(Array.CASEINSENSITIVE);
for (i = 0; i<len; i++)
{
temp[i] = temp[i].split("SZ|").join("Ş");
temp[i] = temp[i].split("GZ|").join("Ğ");
temp[i] = temp[i].split("CZ|").join("Ç");
temp[i] = temp[i].split("IZ|").join("İ");
temp[i] = temp[i].split("OZ|").join("Ö");
temp[i] = temp[i].split("UZ|").join("Ü");
temp[i] = temp[i].split("sz|").join("ş");
temp[i] = temp[i].split("gz|").join("ğ");
temp[i] = temp[i].split("cz|").join("ç");
temp[i] = temp[i].split("hz|").join("ı");
temp[i] = temp[i].split("oz|").join("ö");
temp[i] = temp[i].split("uz|").join("ü");
}
return temp;
}
public static function turkishSortOn(temp:Array, value:String):Array
{
var len:int = temp.length;
for (var i:int = 0; i<len; i++)
{
switch(String(temp[i][value]).charAt(0))
{
case "Ş":
temp[i][value] = "SZ|"+String(temp[i][value]).substring(1, String(temp[i][value]).length);
break;
case "Ğ":
temp[i][value] = "GZ|"+String(temp[i][value]).substring(1, String(temp[i][value]).length);
break;
case "Ç":
temp[i][value] = "CZ|"+String(temp[i][value]).substring(1, String(temp[i][value]).length);
break;
case "İ":
temp[i][value] = "IZ|"+String(temp[i][value]).substring(1, String(temp[i][value]).length);
break;
case "Ö":
temp[i][value] = "OZ|"+String(temp[i][value]).substring(1, String(temp[i][value]).length);
break;
case "Ü":
temp[i][value] = "UZ|"+String(temp[i][value]).substring(1, String(temp[i][value]).length);
break;
case "ş":
temp[i][value] = "sz|"+String(temp[i][value]).substring(1, String(temp[i][value]).length);
break;
case "ğ":
temp[i][value] = "gz|"+String(temp[i][value]).substring(1, String(temp[i][value]).length);
break;
case "ç":
temp[i][value] = "cz|"+String(temp[i][value]).substring(1, String(temp[i][value]).length);
break;
case "ı":
temp[i][value] = "hz|"+String(temp[i][value]).substring(1, String(temp[i][value]).length);
break;
case "ö":
temp[i][value] = "oz|"+String(temp[i][value]).substring(1, String(temp[i][value]).length);
break;
case "ü":
temp[i][value] = "uz|"+String(temp[i][value]).substring(1, String(temp[i][value]).length);
break;
}
}
temp.sortOn(value, Array.CASEINSENSITIVE);
for (i = 0; i<len; i++)
{
temp[i][value] = temp[i][value].split("SZ|").join("Ş");
temp[i][value] = temp[i][value].split("GZ|").join("Ğ");
temp[i][value] = temp[i][value].split("CZ|").join("Ç");
temp[i][value] = temp[i][value].split("IZ|").join("İ");
temp[i][value] = temp[i][value].split("OZ|").join("Ö");
temp[i][value] = temp[i][value].split("UZ|").join("Ü");
temp[i][value] = temp[i][value].split("sz|").join("ş");
temp[i][value] = temp[i][value].split("gz|").join("ğ");
temp[i][value] = temp[i][value].split("cz|").join("ç");
temp[i][value] = temp[i][value].split("hz|").join("ı");
temp[i][value] = temp[i][value].split("oz|").join("ö");
temp[i][value] = temp[i][value].split("uz|").join("ü");
}
return temp;
}
}
}
.
Emrah Atılgan, Haklısın biraz aceleyle koydum buraya, o yüzden kullanımını ekleyemedim. Kullanımı aşağıda mevcut. sz ile başlayan kelime olsa hata vermez, çünkü ben "sz|" arıyorum. belki daha kuvvetli olması için sz|-? gibi olanaksız stringler kullanılabilir. ama zaten bunlar genelde özel isimlerde kullanılan fonskiyonlar olduğu için, bu yeterli olacaktır.
//kullanım
import com.aytekinmeral.utils.TurkishSort;
var myArr:Array = [Şanlıurfa, Mersin, İstanbul, Çankırı, Üsküdar, Sivas, Çanakkale];
var arr:Array = TurkishSort.turkishSort(myArr);
trace(arr);
//object içeren arraylar için
var myArr:Array = [{name:Şanlıurfa, code:1}, {name:Samsun, code:2}];
var arr:Array = TurkishSort.turkishSortOn(myArr);
trace(arr[0].name, arr[1].name);
Kimler Burada? 
Son 1 dakika içinde MMIstanbul' da 53 (50 kayıtlı, 3 ziyaretçi) kullanıcı varmış. Login durumda olanlar aşağıda:
MMIstanbul Blog'undan
Blog Bölümü Blogevi.com'a Taşınıyor
Selam arkadaşlar MMIstanbul'da , tasarımcı ve programcıların blog yazılarını "feedleyerek" MMIstanbul okurlarını MMIstanbul dışın ...
7.500'üncü üyemiz Cem Koç!
Neler Yapılabilir?
500 Hatası Hakkında!
Reklam, MMIstanbul ve Yeni Projeler (Durumumuz Bu Tarzında)









nasıl çalıştığını kısaca açıklaman güzel olurdu, hiç yorum satırı da eklenmemiş. mesela "sz" ile başlıyan bir kelime olsa burda hata vermez miydi?