Прежде всего, вы просите титульный код, а не верблюд, потому что в верблюжьем футляре первая буква слова строчная, а ваш пример показывает, что первая буква должна быть прописной.
Во всяком случае, вот как вы могли бы достичь желаемого результата:
string textToChange = "WARD_VS_VITAL_SIGNS";
System.Text.StringBuilder resultBuilder = new System.Text.StringBuilder();
foreach(char c in textToChange)
{
// Replace anything, but letters and digits, with space
if(!Char.IsLetterOrDigit(c))
{
resultBuilder.Append(" ");
}
else
{
resultBuilder.Append(c);
}
}
string result = resultBuilder.ToString();
// Make result string all lowercase, because ToTitleCase does not change all uppercase correctly
result = result.ToLower();
// Creates a TextInfo based on the "en-US" culture.
TextInfo myTI = new CultureInfo("en-US",false).TextInfo;
result = myTI.ToTitleCase(result).Replace(" ", String.Empty);
Примечание: result
теперь WardVsVitalSigns
.
Если ты, в самом деле, хотите верблюжьей случай, то после того, как все выше, просто использовать эту вспомогательную функцию:
public string LowercaseFirst(string s)
{
if (string.IsNullOrEmpty(s))
{
return string.Empty;
}
char[] a = s.ToCharArray();
a[0] = char.ToLower(a[0]);
return new string(a);
}
Таким образом, вы могли бы назвать его, как это:
result = LowercaseFirst(result);
Вам действительно нужно использовать регулярные выражения, или это метод без регулярных выражений? – doppelgreener
Если у вас есть проблема, и если вы хотите использовать регулярное выражение для решения этой проблемы, у вас есть две проблемы. ;-) –
@AshishGupta ;-) Вы правы, я делаю проблему более сложной для использования RegEx для решения. – wlz