quiero para números numeros los inglés ingles grandes explicar escribir digitos cómo como cifras adultos c# .net cultureinfo string-parsing persian

c# - para - numeros grandes en ingles



¿Cómo convertir dígitos persas en variables a dígitos en inglés usando la cultura? (11)

Aquí mi código convierte los dígitos persas en variable al inglés, por método de extensión (se puede usar con un punto después de su expresión)

private static readonly string[] pn = { "۰", "۱", "۲", "۳", "۴", "۵", "۶", "۷", "۸", "۹" }; private static readonly string[] en = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9" }; public static string ToEnglishNumber(this string strNum) { string chash = strNum; for (int i = 0; i < 10; i++) chash = chash.Replace(pn[i], en[i]); return chash; } public static string ToEnglishNumber(this int intNum) { string chash = intNum.ToString(); for (int i = 0; i < 10; i++) chash = chash.Replace(pn[i], en[i]); return chash; }

y cuando quieras usar este código tienes que escribir: txt1.Value.ToEnglishNumber ();

Quiero cambiar los números persas que se guardan en una variable como esta:

string Value="۱۰۳۶۷۵۱";

a

string Value="1036751";

¿Cómo puedo usar una manera fácil como la información de la cultura para hacer esto por favor?

mi código de muestra es:

List<string> NERKHCOlist = new List<string>(); NERKHCOlist = ScrappingFunction(NERKHCO, NERKHCOlist); int NERKHCO_Price = int.Parse(NERKHCOlist[0]);//NERKHCOlist[0]=۱۰۳۶۷۵۱

<= Por lo que no se puede analizar a int
Y esto está en mi función que vuelve a una lista con dígitos persas dentro de los elementos de la lista

protected List<string> ScrappingFunction(string SiteAddress, List<string> NodesList) { string Price = "null"; List<string> Targets = new List<string>(); foreach (var path in NodesList) { HtmlNode node = document.DocumentNode.SelectSingleNode(path.ToString());//recognizing Target Node Price = node.InnerHtml;//put text of target node in variable(PERSIAN DIGITS) Targets.Add(Price); } return Targets; }


Debe analizarlos primero, utilizando, por ejemplo, Int32.Parse () con el especificador cultural correcto. Una vez que lo tiene como un entero llano, es simplemente una cuestión de llamar a ToString (), nuevamente con el especificador cultural correcto.

Una solución alternativa es recorrer la cadena de caracteres por carácter y simplemente reemplazar cualquier carácter que sea un dígito persa con el número árabe correspondiente (oeste) . Otros caracteres se pueden conservar tal como están, si es necesario.

Si la cadena realmente contiene un número , debe ir con el método de análisis de enteros. Si no es solo un número, sino realmente un número de teléfono, un número de serie, etc., es posible que deba usar el algoritmo de reemplazo.


Escribí este método de extensión para convertir dígitos árabes y persas en una cadena a su representación latina

public static class Extensions { public static string ConvertDigitsToLatin(this string s) { var sb = new StringBuilder(); for (int i = 0; i < s.Length; i++) { switch (s[i]) { //Persian digits case ''/u06f0'': sb.Append(''0''); break; case ''/u06f1'': sb.Append(''1''); break; case ''/u06f2'': sb.Append(''2''); break; case ''/u06f3'': sb.Append(''3''); break; case ''/u06f4'': sb.Append(''4''); break; case ''/u06f5'': sb.Append(''5''); break; case ''/u06f6'': sb.Append(''6''); break; case ''/u06f7'': sb.Append(''7''); break; case ''/u06f8'': sb.Append(''8''); break; case ''/u06f9'': sb.Append(''9''); break; //Arabic digits case ''/u0660'': sb.Append(''0''); break; case ''/u0661'': sb.Append(''1''); break; case ''/u0662'': sb.Append(''2''); break; case ''/u0663'': sb.Append(''3''); break; case ''/u0664'': sb.Append(''4''); break; case ''/u0665'': sb.Append(''5''); break; case ''/u0666'': sb.Append(''6''); break; case ''/u0667'': sb.Append(''7''); break; case ''/u0668'': sb.Append(''8''); break; case ''/u0669'': sb.Append(''9''); break; default: sb.Append(s[i]); break; } } return sb.ToString(); } }


La solución de Saeed está bien, pero para las variables dobles también debe reemplazar "٫" Personaje para "." , Para que puedas usar:

private string ToEnglishNumber(string strNum) { string[] pn = { "۰", "۱", "۲", "۳", "۴", "۵", "۶", "۷", "۸", "۹", "٫" }; string[] en = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9","." }; string chash = strNum; for (int i = 0; i < 11; i++) chash = chash.Replace(pn[i], en[i]); return chash; }



Puedes convertirlos manualmente como tal

char[][] numbers = new char[][] { "0123456789".ToCharArray(),"persian numbers 0-9 here".ToCharArray() }; public void Convert(string problem) { for (int x = 0; x <= 9; x++) { problem.Replace(numbers[0][x], numbers[1][x]); } }

No sé los números persas, por lo que tendrá que agregarlos a la matriz char.


Simplemente use el siguiente código:

private string toPersianNumber(string input) { string[] persian = new string[10] { "۰", "۱", "۲", "۳", "۴", "۵", "۶", "۷", "۸", "۹" }; for (int j=0; j<persian.Length; j++) input = input.Replace(persian[j], j.ToString()); return input; }


USO de la cultura Para convertir el número de cualquier idioma a cualquier idioma

Funciones:

public static string ConvertDigitChar(this string str, CultureInfo source, CultureInfo destination) { for (int i = 0; i <= 9; i++) { str = str.Replace(source.NumberFormat.NativeDigits[i], destination.NumberFormat.NativeDigits[i]); } return str; } public static string ConvertDigitChar(this int digit, CultureInfo destination) { string res = digit.ToString(); for (int i = 0; i <= 9; i++) { res = res.Replace(i.ToString(), destination.NumberFormat.NativeDigits[i]); } return res; }

Cómo utilizar las funciones:

var fa = CultureInfo.GetCultureInfoByIetfLanguageTag("fa"); var en = CultureInfo.GetCultureInfoByIetfLanguageTag("en"); string str = "۰0۱1۲2۳3۴4۵5۶6۷7۸8۹9"; string r1 = str.ConvertDigitChar(en, fa); string r2 = str.ConvertDigitChar(fa, en); int i = 123456789; string r3 = i.ConvertDigitChar(fa);

Resultado:

r1: "۰۰۱۱۲۲۳۳۴۴۵۵۶۶۷۷۸۸۹۹"

r2: "00112233445566778899"

r3: "۰۱۲۳۴۵۶۷۸۹"


public static string ChangeNumberToEnglishNumber(string value) { string result=string.Empty; foreach (char ch in value) { try { double convertedChar = char.GetNumericValue(ch); if (convertedChar >= 0 && convertedChar <= 9) { result += convertedChar.ToString(CultureInfo.InvariantCulture); } else { result += ch; } } catch (Exception e) { result += ch; } } return result; }


string test = "۱۰۳۶۷۵۱"; string EnglishNumbers = ""; for (int i = 0; i < test.Length; i++) { EnglishNumbers += char.GetNumericValue(test, i); } int convertednumber = Convert.ToInt32(EnglishNumbers);


public static string ToEnglishNumber(string input) { var englishnumbers = new Dictionary<string, string>() { {"۰","0" }, {"۱","1" }, {"۲","2" }, {"۳","3" },{"۴","4" }, {"۵","5" },{"۶","6" }, {"۷","7" },{"۸","8" }, {"۹","9" }, {"٠","0" }, {"١","1" }, {"٢","2" }, {"٣","3" },{"٤","4" }, {"٥","5" },{"٦","6" }, {"٧","7" },{"٨","8" }, {"٩","9" }, }; foreach (var numbers in englishnumbers) input = input.Replace(numbers.Key, numbers.Value); return input; }