コード例 #1
0
 private bool ThemVaoChu(DinhNghiaKieuGo dnkg, int trungDau)
 {
     if ((dnkg >= DinhNghiaKieuGo.khongDau) && (dnkg <= DinhNghiaKieuGo.nang))
     {
         this.KiemTraViTriDau();
         if ((this.chu.vitriDau == -1) || (this.chu.nguyenAm.Length == 0))
         {
             return(false);
         }
         if (this.chu.dau == ((Dau)((int)dnkg)))
         {
             if (this.chu.dau == Dau.khongDau)
             {
                 return(false);
             }
             this.chu.trungdau       = trungDau;
             this.chu.dau            = Dau.khongDau;
             this.chu.vitriThanhPhan = 2;
         }
         if (this.chu.trungdau == -1)
         {
             this.chu.dau = (Dau)dnkg;
         }
         return(true);
     }
     this.mocCu = this.chu.moc;
     if (dnkg == DinhNghiaKieuGo.DauMuChungAOE)
     {
         char[] anyOf = new char[] { 'a', 'A', 'o', 'O', 'e', 'E' };
         if (this.chu.nguyenAm.IndexOfAny(anyOf) < 0)
         {
             return(false);
         }
         this.chu.moc = '^';
     }
     else if (dnkg == DinhNghiaKieuGo.AThanh6)
     {
         char[] chArray2 = new char[] { 'a', 'A' };
         char[] chArray3 = new char[] { 'o', 'O', 'e', 'E' };
         if ((this.chu.nguyenAm.IndexOfAny(chArray2) < 0) || (this.chu.nguyenAm.IndexOfAny(chArray3) >= 0))
         {
             return(false);
         }
         this.chu.moc = '^';
     }
     else if (dnkg == DinhNghiaKieuGo.EThanh6)
     {
         char[] chArray4 = new char[] { 'E', 'e' };
         char[] chArray5 = new char[] { 'a', 'A', 'o', 'O' };
         if ((this.chu.nguyenAm.IndexOfAny(chArray4) < 0) || (this.chu.nguyenAm.IndexOfAny(chArray5) >= 0))
         {
             return(false);
         }
         this.chu.moc = '^';
     }
     else if (dnkg == DinhNghiaKieuGo.OThanh6)
     {
         char[] chArray6 = new char[] { 'O', 'o' };
         char[] chArray7 = new char[] { 'a', 'A', 'e', 'E' };
         if ((this.chu.nguyenAm.IndexOfAny(chArray6) < 0) || (this.chu.nguyenAm.IndexOfAny(chArray7) >= 0))
         {
             return(false);
         }
         this.chu.moc = '^';
     }
     else if ((dnkg == DinhNghiaKieuGo.UThanh7OThanh7AThanh8) || (dnkg == DinhNghiaKieuGo.UOASimple))
     {
         char[] chArray8 = new char[] { 'a', 'A' };
         if (((((this.chu.nguyenAm.Length == 0) || (this.chu.nguyenAm[0] == 'u')) || (this.chu.nguyenAm[0] == 'U')) || ((this.chu.nguyenAm.IndexOfAny(chArray8) < 0) && (this.chu.nguyenAm[0] == 'o'))) || (this.chu.nguyenAm[0] == 'O'))
         {
             char[] chArray9 = new char[] { 'u', 'o', 'U', 'O' };
             if (this.chu.nguyenAm.IndexOfAny(chArray9) < 0)
             {
                 return(false);
             }
             if (this.chu.nguyenAm.Length == 1)
             {
                 this.chu.UODau = true;
             }
             this.chu.moc = '*';
         }
         else
         {
             if (this.chu.nguyenAm.IndexOfAny(chArray8) < 0)
             {
                 return(false);
             }
             this.chu.moc = '(';
         }
     }
     else if (dnkg == DinhNghiaKieuGo.UThanh7OThanh7)
     {
         char[] chArray10 = new char[] { 'u', 'o', 'U', 'O' };
         if (this.chu.nguyenAm.IndexOfAny(chArray10) < 0)
         {
             return(false);
         }
         if (this.chu.nguyenAm.Length == 1)
         {
             this.chu.UODau = true;
         }
         this.chu.moc = '*';
     }
     else if (dnkg == DinhNghiaKieuGo.AThanh8)
     {
         char[] chArray11 = new char[] { 'a', 'A' };
         if (this.chu.nguyenAm.IndexOfAny(chArray11) < 0)
         {
             return(false);
         }
         this.chu.moc = '(';
     }
     if (((this.chu.moc == '*') && (this.mocCu == '*')) && (this.chu.UODau && (this.chu.nguyenAm.Length == 2)))
     {
         this.mocCu     = '-';
         this.chu.UODau = false;
     }
     if (this.chu.moc == this.mocCu)
     {
         this.chu.trungdau       = trungDau;
         this.chu.moc            = '-';
         this.chu.vitriThanhPhan = 2;
         if ((this.mocCu == '*') && (dnkg == DinhNghiaKieuGo.UThanh7OThanh7AThanh8))
         {
             if (this.chu.nguyenAm[0] == 'U')
             {
                 this.chu.amCuoi = this.chu.amCuoi + this.kieuGo[10].ToString().ToUpper();
             }
             else
             {
                 this.chu.amCuoi = this.chu.amCuoi + this.kieuGo[10].ToString().ToLower();
             }
             if (this.chu.UOA)
             {
                 this.chu.nguyenAm = this.chu.nguyenAm.Substring(1);
             }
         }
     }
     return(true);
 }
コード例 #2
0
 public string Convert(string nguon)
 {
     this.s = this.value = "";
     this.chu.Reset();
     this.i = 0;
     while (this.i < nguon.Length)
     {
         if (this.chu.vitriThanhPhan == 0)
         {
             this.viTriDauMoc = this.TimKiemKieuGo(nguon[this.i]);
             if (this.viTriDauMoc == DinhNghiaKieuGo.DThanhD)
             {
                 if (this.chu.amDau.ToLower() == "d")
                 {
                     this.chu.D9             = true;
                     this.chu.vitriThanhPhan = 1;
                 }
                 else
                 {
                     this.chu.amDau = this.chu.amDau + nguon[this.i];
                 }
             }
             else if (this.viTriDauMoc == DinhNghiaKieuGo.UThanh7OThanh7AThanh8)
             {
                 this.chu.vitriThanhPhan = 1;
                 this.chu.moc            = '*';
                 char ch  = nguon[this.i];
                 char ch2 = nguon[this.i];
                 if (ch.ToString() == ch2.ToString().ToLower())
                 {
                     this.chu.nguyenAm = "u";
                 }
                 else
                 {
                     this.chu.nguyenAm = "U";
                 }
                 this.chu.UOA = true;
             }
             else if (this.KiemTraNguyenAm(nguon[this.i]))
             {
                 this.chu.vitriThanhPhan = 1;
                 this.chu.nguyenAm       = nguon[this.i].ToString();
             }
             else
             {
                 this.chu.amDau = this.chu.amDau + nguon[this.i];
             }
         }
         else if (this.chu.vitriThanhPhan == 1)
         {
             this.viTriDauMoc = this.TimKiemKieuGo(nguon[this.i]);
             if (((this.chu.nguyenAm.Length > 0) && this.KiemTraNguyenAm(nguon[this.i])) || ((this.viTriDauMoc == DinhNghiaKieuGo.UThanh7OThanh7AThanh8) && (this.chu.nguyenAm.Length == 1)))
             {
                 if (((this.chu.amDau == "g") || (this.chu.amDau == "G")) && ((this.chu.nguyenAm[0] == 'i') || (this.chu.nguyenAm[0] == 'I')))
                 {
                     this.chu.amDau    = this.chu.amDau + this.chu.nguyenAm[0];
                     this.chu.nguyenAm = this.chu.nguyenAm.Substring(1);
                 }
                 else if (((this.chu.amDau == "q") || (this.chu.amDau == "Q")) && ((this.chu.nguyenAm[0] == 'u') || (this.chu.nguyenAm[0] == 'U')))
                 {
                     this.chu.amDau    = this.chu.amDau + this.chu.nguyenAm[0];
                     this.chu.nguyenAm = this.chu.nguyenAm.Substring(1);
                 }
             }
             if ((this.viTriDauMoc == DinhNghiaKieuGo.UThanh7OThanh7AThanh8) && (this.chu.nguyenAm.Length == 0))
             {
                 char ch4 = nguon[this.i];
                 char ch5 = nguon[this.i];
                 if (ch4.ToString() == ch5.ToString().ToLower())
                 {
                     this.chu.nguyenAm = "u";
                 }
                 else
                 {
                     this.chu.nguyenAm = "U";
                 }
                 this.chu.UOA = true;
             }
             if ((this.viTriDauMoc >= DinhNghiaKieuGo.khongDau) && (this.TimKiemAmDau() || (this.ktChinhTa != 2)))
             {
                 if (this.viTriDauMoc == DinhNghiaKieuGo.DThanhD)
                 {
                     if ((this.chu.amDau == "d") || (this.chu.amDau == "D"))
                     {
                         if (this.chu.D9)
                         {
                             this.chu.D9             = false;
                             this.chu.trungdau       = this.i;
                             this.chu.vitriThanhPhan = 2;
                             this.chu.amCuoi         = nguon[this.i].ToString();
                         }
                         else
                         {
                             this.chu.D9 = true;
                         }
                     }
                     else
                     {
                         this.chu.vitriThanhPhan = 2;
                         this.chu.amCuoi         = this.chu.amCuoi + nguon[this.i];
                     }
                 }
                 else if (!this.ThemVaoChu(this.viTriDauMoc, this.i))
                 {
                     if (this.KiemTraNguyenAm(nguon[this.i]))
                     {
                         this.chu.nguyenAm = this.chu.nguyenAm + nguon[this.i];
                     }
                     else
                     {
                         this.chu.vitriThanhPhan = 2;
                         this.chu.amCuoi         = this.chu.amCuoi + nguon[this.i];
                     }
                 }
             }
             else if (this.KiemTraNguyenAm(nguon[this.i]))
             {
                 this.chu.nguyenAm = this.chu.nguyenAm + nguon[this.i];
             }
             else
             {
                 this.chu.vitriThanhPhan = 2;
                 this.chu.amCuoi         = this.chu.amCuoi + nguon[this.i];
             }
             if (this.chu.trungdau >= 0)
             {
                 this.chu.vitriThanhPhan = 2;
                 this.chu.amCuoi         = nguon[this.i].ToString();
             }
         }
         else if (this.chu.vitriThanhPhan == 2)
         {
             this.viTriDauMoc = this.TimKiemKieuGo(nguon[this.i]);
             if (((this.viTriDauMoc >= DinhNghiaKieuGo.khongDau) && (this.TimKiemAmDau() || (this.ktChinhTa == 0))) && (this.TimKiemPhuAmCuoi() && (this.chu.trungdau == -1)))
             {
                 if (this.viTriDauMoc == DinhNghiaKieuGo.DThanhD)
                 {
                     if ((this.chu.amDau == "d") || (this.chu.amDau == "D"))
                     {
                         if (this.chu.D9)
                         {
                             this.chu.D9             = false;
                             this.chu.trungdau       = this.i;
                             this.chu.vitriThanhPhan = 2;
                             this.chu.amCuoi         = this.chu.amCuoi + nguon[this.i];
                         }
                         else
                         {
                             this.chu.D9 = true;
                         }
                     }
                     else
                     {
                         this.chu.amCuoi = this.chu.amCuoi + nguon[this.i];
                     }
                 }
                 else if (!this.ThemVaoChu(this.viTriDauMoc, this.i) || (this.chu.trungdau >= 0))
                 {
                     this.chu.amCuoi = this.chu.amCuoi + nguon[this.i];
                 }
             }
             else
             {
                 this.chu.amCuoi = this.chu.amCuoi + nguon[this.i];
             }
             if (((this.ktChinhTa != 0) && (this.chu.trungdau < 0)) && ((this.chu.amCuoi.Length > 0) && this.KiemTraNguyenAm(this.chu.amCuoi[this.chu.amCuoi.Length - 1])))
             {
                 return(nguon);
             }
         }
         this.i++;
     }
     if (this.chu.D9)
     {
         if (this.chu.amDau != "D")
         {
             if (this.chu.amDau != "d")
             {
                 return(nguon);
             }
             this.s = this.bangMa[0x48];
         }
         else
         {
             this.s = this.bangMa[0x91];
         }
     }
     else
     {
         this.s = this.chu.amDau;
     }
     this.value = this.ChuyenSangTiengViet();
     if (this.value != null)
     {
         return(this.s + this.value + this.chu.amCuoi);
     }
     if (this.chu.nguyenAm == "")
     {
         return(this.s + this.chu.amCuoi);
     }
     return(nguon);
 }