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));
现在,在您的例子中,使用字典数据结构来存储数据
这总是通过牺牲空间复杂度来获取时间复杂度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只适用于第一个元素。。