簡體   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