繁体   English   中英

正则表达式使用c#替换文件中所有出现的文本(大写的第一个字符)

[英]regex to replace all occurances text, uppercase first character in a file using c#

我想重命名我的所有sql表,并以第一个字符大写。

所以:

[blahField] [int] NOT NULL,

应该转换为:

[BlahField] [int] NOT NULL,

([int]变为[Int]并不重要。

我只是使用ac#控制台应用程序来快速执行此操作。

这就是您想要的:

string s = "[blahField] [int] NOT NULL,";
s = Regex.Replace(s, @"^\W*\w", new MatchEvaluator(match => match.Value.ToUpper()));
Console.WriteLine(s);

输出:

[BlahField] [int] NOT NULL,
string input = "[blahField] [int] NOT NULL,";
string pattern = @"\[(.+?)]";
string result = Regex.Replace(input, pattern,
                    m => "[" +
                        m.Groups[1].Value.Substring(0, 1).ToUpper()
                        + m.Groups[1].Value.Substring(1)
                        + "]"
                );

这将返回[Int],但您说没关系。

这有效:

public static string FixIt(string s) {
   return s.Substring(0, 1) + Char.ToUpper(s[1]) + s.Substring(2);
}

甚至

return "[" + Char.ToUpper(s[1]) + s.Substring(2);

正则表达式似乎在这里过分杀伤力。

我认为这只是第一个需要大写的“ [blabla]” ...

否则,请忽略此答案:)

static void Main(string[] args)
{
    Console.WriteLine(DoTheMrBlah("[blahField] [int] NOT NULL,"));
    Console.ReadKey();
}

static string DoTheMrBlah(string mrBlahMe)
{
    Match m = Regex.Match(mrBlahMe, @"\[([a-z]){1}([a-zA-Z0-9]+)\](.+)");
    if (m.Success)
    {
        char upperme = m.Groups[1].Value.ToUpper()[0];
        return string.Format("[{0}{1}]{2}", upperme, m.Groups[2], m.Groups[3]);
    }
    else return mrBlahMe;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM