C#替换字符串

C#替换字符串,c#,replace,uppercase,lowercase,C#,Replace,Uppercase,Lowercase,我有一个包含单词及其替换单词的列表,例如: string result = input.Replace ("desk", "table"); result = result.Replace ("Desk", "Table"); 桌面-->表格 等等 所以我们假设如果用户写desk它将给出结果table,但是如果用户写desk用大写字母D它将不会做任何改变。我知道如何忽略大写字母,但是世界将被表格所取代,其中t是小写字母。。。我希望t是大写的。所以如果桌面-->表和桌面-->表。。。我怎么能做到

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

string result = input.Replace ("desk", "table");
result = result.Replace ("Desk", "Table");
桌面-->表格 等等


所以我们假设如果用户写desk它将给出结果table,但是如果用户写desk用大写字母D它将不会做任何改变。我知道如何忽略大写字母,但是世界将被表格所取代,其中t是小写字母。。。我希望t是大写的。所以如果桌面-->表和桌面-->表。。。我怎么能做到

您可以第二次调用replace函数,第二次使用大写字母

例如:

string result = input.Replace ("desk", "table");
result = result.Replace ("Desk", "Table");
将字符串的第一个字符转换为大写并不困难。您可以使用以下方法:

string lower = "desk";
string upper = char.ToUpper(lower[0]) + lower.Substring(1);

您可以使用下面的代码将输入字符串的第一个字母变成大写

str = str.First().ToString().ToUpper() + String.Join("", str.Skip(1));
现在,在您的例子中,使用字典数据结构来存储数据

  • 将输入值存储为(键)桌面->表格(值)

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

  • 因此,您现在可以像if desk-->table和if desk-->table一样获取值


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

    您是说您有一个包含单词及其替换单词的列表。因此,数据结构将是

    Dictionary<string, string> dict = new Dictionary<string, string>();
    dict.Add("desk","table");
    dict.Add("Desk","Table"); 
    
    但是,如果您以下面的方式维护这些值

    Dictionary<string, string> dict = new Dictionary<string, string>();
    dict.Add("desk","table"); 
    
    Dictionary dict=new Dictionary();
    添加(“桌子”、“桌子”);
    
    那么解决办法可能是

    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;
        }
    
    private void按钮1\u单击(对象发送者,事件参数e)
    {
    Dictionary dict=新字典();
    添加(“桌子”、“桌子”);
    字符串输入=“桌面”;
    var dictValue=dict[input.ToLower()];
    var结果=IsInitCap(输入子字符串(0,1))
    ?System.Threading.Thread.CurrentThread.CurrentCulture.TextInfo.ToTitleCase(dictValue)
    :默认值;
    }
    私有布尔IsInitCap(字符串str)
    {
    Match=Regex.Match(str,@“^[A-Z]”);
    返回匹配。成功?真:假;
    }
    

    希望这有帮助

    你看过RegEx吗?没有,我没有。。。你是说RegEx可以解决我的问题,对吗?你可以再次调用replace函数,用Table替换Desk,而不是忽略大小写。但我有一个问题,如果原来的单词是DEsk,是否应该用TAble替换?或者这只适用于第一个字母?@Tibi只适用于第一个元素。。