我正在準備一個簡單的字典項目,並且已經準備好用兩種語言進行搜索。儘管如此,因爲其中一個使用西里爾文字母,我必須能夠檢查數據庫,即使該單詞是用拉丁字母書寫的。這是什麼意思將一個字母轉換爲另一個
西里爾:кон
拉美:KON
兩個應該給這個字的說明(在這種情況下「馬」)。我一直在考慮使用兩個結構和兩個字母來達到這個目的......不過,我仍然無法得到它。你們有些人有類似的情況嗎?如果是 - 請分享建議或代碼樣本。
我正在準備一個簡單的字典項目,並且已經準備好用兩種語言進行搜索。儘管如此,因爲其中一個使用西里爾文字母,我必須能夠檢查數據庫,即使該單詞是用拉丁字母書寫的。這是什麼意思將一個字母轉換爲另一個
西里爾:кон
拉美:KON
兩個應該給這個字的說明(在這種情況下「馬」)。我一直在考慮使用兩個結構和兩個字母來達到這個目的......不過,我仍然無法得到它。你們有些人有類似的情況嗎?如果是 - 請分享建議或代碼樣本。
詞典應該適合映射西里爾字符到拉丁人。我假設你會按照http://en.wikipedia.org/wiki/ISO_9來映射它們。
public class ISO9TransliterationProvider {
private readonly Dictionary<Char, Char> charMapping = new Dictionary<char,char>() {
{ 'А', 'A' },
{ 'Б', 'B' }
//etc.
};
public string ToLatin(string cyrillic) {
StringBuilder result = new StringBuilder();
foreach (char c in cyrillic)
result.Append(charMapping[c]);
return result.ToString();
}
}
也許這就是對你有所幫助:
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;
}
}
}
cryllic拉丁文:
text.Replace(pair.Key, pair.Value);
拉丁語cryllic
source.Replace(pair.Value,pair.Key);
請不要在標題重複標籤( 「C#」)。這就是標籤的用途。 – 2010-06-15 18:49:30
感謝您的編輯。我不知道這個系統是這樣工作的。我的錯! – Branimir 2010-06-16 13:52:39