Po pierwsze, pytasz o tytuł, a nie wielbłądy, ponieważ w przypadku wielbłąda pierwsza litera tego słowa jest mała, a twój przykład pokazuje, że pierwsza litera ma być wielka.
W każdym razie, oto jak można osiągnąć pożądany rezultat:
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);
Uwaga: result
jest teraz WardVsVitalSigns
.
Jeśli nie, w rzeczywistości chcą wielbłądziej, wówczas po wszystkich wyżej wymienionych, wystarczy użyć tej funkcji pomocnika:
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);
}
Więc można to nazwać, tak:
result = LowercaseFirst(result);
Czy naprawdę potrzebujesz użyć wyrażeń regularnych, czy też jest to metoda bez wyrażeń regularnych? – doppelgreener
Jeśli masz problem i chcesz użyć tego wyrażenia regularnego, aby rozwiązać ten problem, masz teraz dwa problemy. ;-) –
@AshishGupta ;-) masz rację, sprawię, że problem będzie bardziej skomplikowany, jeśli użyjesz RegEx do rozwiązania. – wlz