2010-07-13 3 views
21

Мне нужно заменить заглавную букву в имени переменной с прописной буквы и добавить пространствоКак заменить верхний регистр нижним регистром с помощью регулярного выражения?

Например:

NotImplementedException должен быть Not implemented exception UnhandledException должен быть Unhandled exception

+2

На каком языке программирования? В большинстве случаев, только регулярные выражения не позволят вам сделать это, вам нужно запустить код на входе –

+0

Язык - это C#, но мне нужно регулярное выражение :( – aron

+1

Есть ли какая-то конкретная причина, по которой вам нужно использовать регулярное выражение? В большинстве случаев люди задают такой вопрос, они делают предположения о том, какой им нужен ответ. –

ответ

35

Поскольку вы не указали язык , Я приведу пример на C#. Я уверен, что ваш язык предложит что-то подобное.

String s = "NotImplementedException"; 
s = Regex.Replace(s, @"\B[A-Z]", m => " " + m.ToString().ToLower()); 
// s = "Not implemented exception" 
+4

A лучше C# версии этого ответа, который поддерживал бы ЛЮБОЙ буквой верхнего регистра (даже акцентированные): 'String s =" NotImplementedException "; s = Reg ex.Replace (s, @ "\ B \ p {Lu}", m => "" + m.ToString(). ToLower()); ' –

-5

@Ignacio, прошу отличаться. Конечно, это не то, что можно сделать в одном утверждении с обычными регулярными выражениями. Но СЭД команда:

sed -e 's/\([a-zA-Z]\)C/\1 c/g' infile.txt 

заменит все вхождения «C» с «с», когда «C» непосредственно предшествует буква. Все, что должен сделать OP, это сделать 26 вариантов этого, что может оказаться утомительным. И получить условие, при котором это событие может быть изменено, может быть сложно, но это всегда происходит с использованием регулярных выражений для глобального поиска и замены.

+2

Был ли это серьезный ответ, или вы просто спорили с Игнасио? –

1

Это может быть сделано в СЭД с одной командой:

$ echo "NotImplementedException" | sed 's/\B[A-Z]/ \l&/g' 
Not implemented exception 

Но поддержка \l\u, \L, \U и \E) является редким среди Regex реализации на разных языках. Я уверен, что Perl это реализовано.

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