Страницы

Поиск по вопросам

воскресенье, 14 апреля 2019 г.

Как поменять все прописные на строчные с подчеркиванием?

Есть строка, в которой нужно заменить все идентификаторы вида SomeIdentifier на идентификаторы вида some_identifier Готовое решение (работает правильно): string GetUnderScore(string source) { string target = "";
foreach (char c in source) { if (char.IsUpper(c)) { target += "_" + char.ToLower(c); } else { target += c; } } if (target[0] == '_') { target = target.Substring(1); }
return target; } но уж как-то много кода для такой простой задачи. Как упростить?


Ответ

Можно избавиться от else и второго if и если строки длинные, то лучше использовать StringBuilder вместо string, т.к. StringBuilder не создаёт новую строку с копированием символов из предыдущей при каждом добавлении наших char :) string GetUnderScore(string source) { var result = new StringBuilder(source); foreach (char c in source) { if (char.IsUpper(c) && result.Length > 0) result.Append("_"); result.Append(char.ToLower(c)); } return result.ToString(); }

Комментариев нет:

Отправить комментарий