0

我有一个包含单词及其替换单词的列表,例如:

桌子-->桌子等。

所以让我们说如果用户写desk它会给出结果但是如果用户用大写D写Desk它不会做任何改变。我知道如何忽略大写,但随后世界将被替换为t为小写的......我希望t为大写。因此,如果desk--> table 并且如果Desk--> Table... 我该怎么做?

4

3 回答 3

1

您可以第二次调用替换函数,第二次使用大写单词。

例如:

string result = input.Replace ("desk", "table");
result = result.Replace ("Desk", "Table");

将字符串的第一个字符变为大写并不是很困难。你可以使用这个方法:

string lower = "desk";
string upper = char.ToUpper(lower[0]) + lower.Substring(1);
于 2012-08-16T05:53:09.677 回答
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;
    }

希望这可以帮助

于 2012-08-16T11:52:03.657 回答
0

您可以使用以下代码将输入字符串的第一个字母设为大写,

str = str.First().ToString().ToUpper() + String.Join("", str.Skip(1));

现在,在您的情况下,使用 Dictionary 数据结构来存储数据。

  1. 将输入值存储为 (key)desk->table(value)

  2. 现在使用上面的代码并将第一个字母大写并存储它(Desk->Table)

因此,您现在可以像desk-->table 和Desk-->Table 一样获取值。

这总是通过牺牲空间复杂度来获取时间复杂度 O(1) 的值。

于 2012-08-16T06:52:34.580 回答