単語とその置換単語を含むリストが 1 つあります。たとえば、次のようになります。
デスク→テーブルなど
したがって、ユーザーがデスクを書くと結果テーブルが得られますが、ユーザーが大文字のDでデスクを書くと変更は行われません。大文字を無視する方法は知っていますが、世界はtが小文字のテーブルに置き換えられます... tを大文字にしたいです。机→テーブルの場合、机→テーブルの場合...どうすればそれができますか?
置換関数を2回目に呼び出すことができ、2回目は大文字で呼び出すことができます。
例えば:
string result = input.Replace ("desk", "table");
result = result.Replace ("Desk", "Table");
文字列の最初の文字を大文字にすることはそれほど難しくありません。この方法を使用できます。
string lower = "desk";
string upper = char.ToUpper(lower[0]) + lower.Substring(1);
あなたは、単語とその置換単語のリストがあると言っています。したがって、データ構造は次のようになります
Dictionary<string, string> dict = new Dictionary<string, string>();
dict.Add("desk","table");
dict.Add("Desk","Table");
これが正しければ、次のように動作します
var result = dict["Desk"];
ただし、以下の方法で値を維持している場合、
Dictionary<string, string> dict = new Dictionary<string, string>();
dict.Add("desk","table");
それなら解決策は
private void button1_Click(object sender, EventArgs e)
{
Dictionary<string, string> dict = new Dictionary<string, string>();
dict.Add("desk","table");
string input = "Desk";
var dictValue = dict[input.ToLower()];
var result = IsInitCap(input.Substring(0, 1))
? System.Threading.Thread.CurrentThread.CurrentCulture.TextInfo.ToTitleCase(dictValue)
: dictValue;
}
private bool IsInitCap(string str)
{
Match match = Regex.Match(str, @"^[A-Z]");
return match.Success ? true : false;
}
お役に立てれば
以下のコードを使用して、入力文字列の最初の文字を大文字にすることができます。
str = str.First().ToString().ToUpper() + String.Join("", str.Skip(1));
あなたの場合、辞書データ構造を使用してデータを保存します。
入力値をそのまま保存 (key)desk->table(value)
上記のコードを使用して、最初の文字を大文字にして保存します (Desk->Table)。
これで、desk-->table および Desk-->Table のように値を取得できるようになりました。
これは、空間の複雑さを妥協することによって、常に時間の複雑さ O(1) の値を取得します。