Có thể chuyển đổi chuỗi Cyrillic sang tiếng Anh (tiếng Latinh) trong C#? Ví dụ tôi cần chuyển đổi "Петролеум" trong "Petroleum". Plus Tôi quên đề cập đến rằng nếu tôi có chuỗi Cyrillic nó cần phải ở lại như thế, vì vậy tôi có thể kiểm tra bằng cách nào đó?Làm cách nào để chuyển đổi chuỗi Cyrillic sang tiếng Anh trong C#
Trả lời
Tôi không quen với Cyrillic, nhưng nếu nó chỉ là bản đồ 1 đến 1 của ký tự Cyrillic thành ký tự Latinh, bạn có thể sử dụng từ điển cặp ký tự và ánh xạ từng ký tự riêng lẻ:
var map = new Dictionary<char, string>
{
{ 'П', "P" },
{ 'е', "e" },
{ 'т', "t" },
{ 'р', "r" },
...
}
var result = string.Concat("Петролеум".Select(c => map[c]));
Tôi đã cố gắng để tránh điều đó, nhưng cảm ơn :) Tôi nghĩ nếu có một số cách sạch hơn từ. Net hoặc C#. – Pece
@ Pece: Tôi không biết về một phương pháp được xây dựng trong thực hiện điều này ... BTW, nếu hiệu suất là một mối quan tâm, sử dụng một char [] hoặc StringBuilder thay vì LINQ. – dtb
Nó không phải là ch ch mapping. Bạn cần nhiều ký tự La Tinh cho một số ký tự Cyrillic. – PauliL
Tất nhiên, bạn có thể ánh xạ các chữ cái với bản sao Latin, nhưng bạn sẽ không nhận được một từ tiếng Anh nào trong số đó trong hầu hết các trường hợp. Ví dụ. Российская Федерация sao chép sang Rossiyskaya Federatsiya. wikipedia cung cấp tổng quan về ánh xạ. Có thể bạn đang tìm kiếm một dịch vụ dịch thuật, google có thể cung cấp api cho dịch vụ đó.
Sử dụng từ điển có từ tiếng Nga và tiếng Anh làm bảng tra cứu. Nó sẽ có rất nhiều cách gõ để xây dựng nó, nhưng đó là bằng chứng đầy đủ.
không thực sự. Nếu google không thể tạo ra một từ điển bằng chứng ngu ngốc, anh ta cũng không thể. – Femaref
Tại sao bạn muốn thực hiện việc này? Thay đổi các ký tự một-cho-một nói chung thậm chí không tạo ra phiên âm hợp lý, ít dịch hơn nhiều. Bạn có thể tìm thấy this bài đăng cần được quan tâm.
Bạn đang tìm kiếm cách dịch các từ tiếng Nga được viết bằng cirillic (trong một số mã hóa, ví dụ như mã Latin, vì iso 8859-5 aka Latin-5 là cyrillic) thành bảng chữ cái latin (có dấu)?
Tôi không biết liệu .NET có gì để chuyển ngữ hay không, nhưng tôi dám nói nó (như nhiều khung công tác tốt khác) chưa có. Liên kết wikipedian này có thể cung cấp cho bạn một số ý tưởng để thực hiện phiên dịch, nhưng nó không phải là cách duy nhất và nhớ những hệ thống chữ viết độc hại không được sử dụng bởi tiếng Nga và cách bạn áp dụng phiên dịch có thể thay đổi theo ngôn ngữ sử dụng hệ thống chữ viết. Ví dụ. see the same for bulgarian. Có thể this link (luôn luôn từ wp) cũng có thể thú vị nếu bạn muốn tự mình lập trình trình dịch.
http://code.google.com/apis/ajaxlanguage/documentation/#Transliteration
Google cung cấp dịch vụ chuyển ngữ dựa trên AJAX này. Bằng cách này, bạn có thể tự mình tránh việc tự dịch chuyển ngữ và cho phép Google thực hiện chúng một cách nhanh chóng. Nó có nghĩa là để cho phía máy khách thực hiện yêu cầu tới Google, vì vậy điều này có nghĩa là ứng dụng của bạn sẽ cần phải có một số loại đầu ra dựa trên web để giải pháp này hoạt động.
Nếu bạn đang sử dụng Windows 7, bạn có thể tận dụng API ELS (Extended Linguistic Services) mới, cung cấp chức năng chuyển ngữ cho bạn. Hãy xem Windows 7 API Code Pack - đó là tập hợp các trình bao bọc được quản lý trên nhiều API mới trong Windows 7 (chẳng hạn như Thanh tác vụ mới). Tìm trong các thư mục Samples
cho ví dụ Transliterator
, bạn sẽ thấy đó là chính xác những gì bạn đang tìm kiếm:
Bạn có thể sử dụng chức năng text.Replace(pair.Key, pair.Value)
.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace Transliter
{
public partial class Form1 : Form
{
Dictionary<string, string> words = new Dictionary<string, string>();
public Form1()
{
InitializeComponent();
words.Add("а", "a");
words.Add("б", "b");
words.Add("в", "v");
words.Add("г", "g");
words.Add("д", "d");
words.Add("е", "e");
words.Add("ё", "yo");
words.Add("ж", "zh");
words.Add("з", "z");
words.Add("и", "i");
words.Add("й", "j");
words.Add("к", "k");
words.Add("л", "l");
words.Add("м", "m");
words.Add("н", "n");
words.Add("о", "o");
words.Add("п", "p");
words.Add("р", "r");
words.Add("с", "s");
words.Add("т", "t");
words.Add("у", "u");
words.Add("ф", "f");
words.Add("х", "h");
words.Add("ц", "c");
words.Add("ч", "ch");
words.Add("ш", "sh");
words.Add("щ", "sch");
words.Add("ъ", "j");
words.Add("ы", "i");
words.Add("ь", "j");
words.Add("э", "e");
words.Add("ю", "yu");
words.Add("я", "ya");
words.Add("А", "A");
words.Add("Б", "B");
words.Add("В", "V");
words.Add("Г", "G");
words.Add("Д", "D");
words.Add("Е", "E");
words.Add("Ё", "Yo");
words.Add("Ж", "Zh");
words.Add("З", "Z");
words.Add("И", "I");
words.Add("Й", "J");
words.Add("К", "K");
words.Add("Л", "L");
words.Add("М", "M");
words.Add("Н", "N");
words.Add("О", "O");
words.Add("П", "P");
words.Add("Р", "R");
words.Add("С", "S");
words.Add("Т", "T");
words.Add("У", "U");
words.Add("Ф", "F");
words.Add("Х", "H");
words.Add("Ц", "C");
words.Add("Ч", "Ch");
words.Add("Ш", "Sh");
words.Add("Щ", "Sch");
words.Add("Ъ", "J");
words.Add("Ы", "I");
words.Add("Ь", "J");
words.Add("Э", "E");
words.Add("Ю", "Yu");
words.Add("Я", "Ya");
}
private void button1_Click(object sender, EventArgs e)
{
string source = textBox1.Text;
foreach (KeyValuePair<string, string> pair in words)
{
source = source.Replace(pair.Key, pair.Value);
}
textBox2.Text = source;
}
}
}
Nếu bạn thay đổi
cryllic để Latin:
text.Replace(pair.Key, pair.Value);
Latin để cryllic
source.Replace(pair.Value,pair.Key);
Phương pháp này rất nhanh:
static string[] CyrilicToLatinL =
"a,b,v,g,d,e,zh,z,i,j,k,l,m,n,o,p,r,s,t,u,f,kh,c,ch,sh,sch,j,y,j,e,yu,ya".Split(',');
static string[] CyrilicToLatinU =
"A,B,V,G,D,E,Zh,Z,I,J,K,L,M,N,O,P,R,S,T,U,F,Kh,C,Ch,Sh,Sch,J,Y,J,E,Yu,Ya".Split(',');
public static string CyrilicToLatin(string s)
{
var sb = new StringBuilder((int)(s.Length * 1.5));
foreach (char c in s)
{
if (c >= '\x430' && c <= '\x44f') sb.Append(CyrilicToLatinL[c - '\x430']);
else if (c >= '\x410' && c <= '\x42f') sb.Append(CyrilicToLatinU[c - '\x410']);
else if (c == '\x401') sb.Append("Yo");
else if (c == '\x451') sb.Append("yo");
else sb.Append(c);
}
return sb.ToString();
}
Đây là giải pháp cho phiên âm Kirin-latin serbian cho hình thức như thế này: form
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
Dictionary<string, string> slova = new Dictionary<string, string>();
public Form1()
{
InitializeComponent();
slova.Add("Љ", "Lj");
slova.Add("Њ", "Nj");
slova.Add("Џ", "Dž");
slova.Add("љ", "lj");
slova.Add("њ", "nj");
slova.Add("џ", "dž");
slova.Add("а", "a");
slova.Add("б", "b");
slova.Add("в", "v");
slova.Add("г", "g");
slova.Add("д", "d");
slova.Add("ђ", "đ");
slova.Add("е", "e");
slova.Add("ж", "ž");
slova.Add("з", "z");
slova.Add("и", "i");
slova.Add("ј", "j");
slova.Add("к", "k");
slova.Add("л", "l");
slova.Add("м", "m");
slova.Add("н", "n");
slova.Add("о", "o");
slova.Add("п", "p");
slova.Add("р", "r");
slova.Add("с", "s");
slova.Add("т", "t");
slova.Add("ћ", "ć");
slova.Add("у", "u");
slova.Add("ф", "f");
slova.Add("х", "h");
slova.Add("ц", "c");
slova.Add("ч", "č");
slova.Add("ш", "š");
}
// Method for cyrillic to latin
private void button1_Click(object sender, EventArgs e)
{
string source = textBox1.Text;
foreach (KeyValuePair<string, string> pair in slova)
{
source = source.Replace(pair.Key, pair.Value);
// For upper case
source = source.Replace(pair.Key.ToUpper(),
pair.Value.ToUpper());
}
textBox2.Text = source;
}
// Method for latin to cyrillic
private void button2_Click(object sender, EventArgs e)
{
string source = textBox2.Text;
foreach (KeyValuePair<string, string> pair in slova)
{
source = source.Replace(pair.Value, pair.Key);
// For upper case
source = source.Replace(pair.Value.ToUpper(),
pair.Key.ToUpper());
}
textBox1.Text = source;
}
}
}
Nếu "lj", "nj" và "dž" không có trong từ điển của từ điển, nó sẽ được dịch là "лј", "нј" và "дж" thay vì "љ", "њ" và "џ ". Ngoài ra, từ xa nên có chữ hoa "Љ", "Њ" và "Џ", bởi vì không có nó, nó sẽ được dịch là "LJ", "NJ" và "DŽ", thay vì "Lj", "Nj" và "Dž". Các ký tự chữ thường khác có thể được thực hiện bằng phương thức ToUpper(). –
- 1. Làm cách nào để chuyển đổi chữ số tiếng Anh sang chữ số Ả Rập?
- 2. Số sang Rails chuyển đổi từ tiếng Anh
- 3. iphone sdk: làm thế nào để chuyển đổi định dạng ngày tiếng Ả Rập sang tiếng Anh?
- 4. Chuyển đổi DateTime từ tiếng Anh sang tiếng Tây Ban Nha
- 5. Chuyển đổi unicode ký tự Cyrillic để chuỗi trong python
- 6. Cách chuyển đổi chuỗi bính âm sang tiếng Trung ở C#
- 7. Làm thế nào để chuyển đổi một chuỗi từ UTF8 sang Latin1 trong C/C++?
- 8. Làm thế nào để chuyển đổi mảng băm băm C# thành chuỗi để chuyển sang API?
- 9. Chuyển đổi chuỗi chứa localtime sang UTC trong C
- 10. Làm cách nào để chuyển đổi chuỗi C++ thành int?
- 11. Làm cách nào để xác minh rằng một chuỗi bằng tiếng Anh?
- 12. Làm cách nào để chuyển đổi từ chuỗi chuỗi thành chuỗi trong C++?
- 13. Động từ tiếng Anh
- 14. Chuyển đổi mảng ngắn thành chuỗi C#
- 15. Làm thế nào để sử dụng FormatMessage C++ để nhận chỉ những thông điệp tiếng Anh
- 16. Có phải C# bằng tiếng Anh không?
- 17. Đếm từ tiếng Anh trong một chuỗi ngẫu nhiên
- 18. Làm thế nào để chuyển đổi chuỗi sang BSON bằng trình điều khiển MongoDB C++?
- 19. Tính năng Google Chơi tối ưu hóa cho thấy English (US) sang tiếng Anh (Anh) dịch
- 20. Tạo các thư mục không phải tiếng Anh trong PHP
- 21. Đang truyền sang giao diện chuyển đổi quyền anh?
- 22. Làm cách nào để chuyển đổi chuỗi dài thành chuỗi trong C++?
- 23. Làm cách nào để chuyển đổi mili giây sang TDateTime?
- 24. Cách xác định chuỗi là tiếng Anh hoặc tiếng Ả Rập?
- 25. Cách thay đổi ngôn ngữ thông báo ngoại lệ Visual Studio sang tiếng Anh trong khi gỡ lỗi
- 26. Làm thế nào để chuyển đổi chuỗi thành double với cultureinfo thích hợp
- 27. Cách chuyển đổi từ EBCDIC sang ASCII trong C# .net
- 28. Làm thế nào để chuyển đổi ISO8859-15 sang UTF8?
- 29. Làm thế nào để chuyển đổi (chuyển ngữ) một chuỗi từ utf8 sang ASCII (byte đơn) trong C#?
- 30. Làm cách nào để chuyển đổi từ SID sang tên tài khoản trong C#
Hey, vừa phát hiện ra điều gì đó, mà có thể là quan trọng đối với bạn quá. Nếu bạn đang chuyển ngữ văn bản chính thức (như địa chỉ của khách hàng quảng cáo hoặc bất kỳ điều gì), bạn cần phải kiểm tra xem có một luật đặc biệt cho chuyển ngữ với một bảng chuyển ngữ được bao gồm hay không. Bulgaria, ví dụ, có luật như vậy và bất kỳ sự lạm dụng nào có thể dẫn đến các vấn đề pháp lý. Ngoài bảng, có thể được mô tả các ngoại lệ của quy tắc, mà bạn cũng cần tuân theo. Giống như България là Bulgaria, không phải Balgariya. – vlood