C# 在单引号后替换字符
我使用以下C#代码将单引号后的小写字母修改为大写:C# 在单引号后替换字符,c#,asp.net,C#,Asp.net,我使用以下C#代码将单引号后的小写字母修改为大写: public virtual string FirstName { get { return _firstName; } set { if (value != null) { int pos = value.IndexOf("'", 0); int strlength = value.Length - 1; if (p
public virtual string FirstName
{
get { return _firstName; }
set
{
if (value != null)
{
int pos = value.IndexOf("'", 0);
int strlength = value.Length - 1;
if (pos >= 0 && pos != strlength)
{
string temp = value[pos + 1].ToString();
temp = temp.ToUpper();
value = value.Remove(pos + 1, 1);
value = value.Insert(pos + 1, temp);
}
}
}
}
对我来说,这看起来太过分了。是否有更简单的方法来实现预期结果:
值:Mc'donald
预期:麦克唐纳
也许是正则表达式
string value = "Mc'donald";
string found = Regex.Match(value, "'[\\w]").Value;
string result = value.Replace(found, found.ToUpper());
Console.WriteLine(result); // Mc'Donald
既然您对正则表达式是开放的,那么这超负荷的Regex.Replace
会满足您的需要吗
下面是上面链接中给出的示例的修改版本。我已将其更改为使用”\w
模式,并以大写形式返回匹配项
using System;
using System.Text.RegularExpressions;
class RegExSample
{
static string CapText(Match m)
{
// Return the match in upper case
return m.ToString().ToUpperInvariant();
}
static void Main()
{
string text = "Mc'donald";
System.Console.WriteLine("text=[" + text + "]");
Regex rx = new Regex(@"'\w");
string result = rx.Replace(text, new MatchEvaluator(RegExSample.CapText));
System.Console.WriteLine("result=[" + result + "]");
}
}
这里没有正则表达式
int pos = data.IndexOf("'");
if (pos >= 0 && pos < data.Length - 1)
{
StringBuilder sbl = new StringBuilder(data);
sbl[pos + 1] = char.ToUpper(sbl[pos + 1]);
data = sbl.ToString();
}
int pos=data.IndexOf(“');
如果(位置>=0&&pos
您愿意使用正则表达式吗?我认为这只会限制单引号的第一个实例。可能是固定的,但是如果代码>数据< /代码>有不止一个单一的数据,你应该考虑一下。你是对的,我知道,它和问题的原始代码一样。