2009-11-26 2 views
0

Я хочу переименовать все мои таблицы sql, имея первый верхний регистр символов.regex, чтобы заменить текст всех событий, заглавный первый символ в файле с помощью C#

Итак:

[blahField] [int] NOT NULL, 

должны быть преобразованы в:.

[BlahField] [int] NOT NULL, 

(не имеет значения, если [INT] становится [Int]

Я только с помощью переменного тока # консольное приложение, чтобы сделать это быстро.

+0

Я предполагаю, что вы хотите получить единый ответ, стих 26 '[a' -> '[A' type отвечает? –

+0

@simeon жаль я не понимаю. – mrblah

ответ

1

Это делает то, что вы хотите:

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, 
0

Я предполагаю, что это только первый "[блабла]", который должен быть в верхнем регистре ...

В противном случае, игнорировать этот ответ :)

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; 
} 
+0

Возможно, вы захотите использовать пару отрицательных классов символов: '@" \ [([az]) [^]] +] [^.] "' Первый из них позволит использовать лучший диапазон символов в таблице имя, а второе позволит пропустить все, кроме последнего сегмента многочастного идентификатора (например, [dbo]. [myTable]). Плюс они выполняют немного лучше. –

+0

Полезно знать, спасибо :) Не изменит ответ жестко, так как mrblah, похоже, не заботится об этом;) – Stormenet

1
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], но вы сказали, что все в порядке.

1

Это работает:

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); 

Regex кажется излишним здесь.

+0

Содержимое поступает из файла, а контент не все в порядке, так сказать. – mrblah

+0

А? Что вы имеете в виду? – jason

Смежные вопросы