2012-03-27 5 views
-1

Как вы следующий формат этой строкиформатной строки .NET C#

Строка contact_informaton_monday

Измени: ContactInformationMonday

В принципе сделать следующие вещи:

  1. Сделайте первый верхний регистр символов (у меня нет проблемы с )
  2. Замените каждый _ (next_letter), сняв знак подчеркивания и просто верхний корпус следующей буквы.

Спасибо

+2

Всегда показывайте нам свою работу и место, где вы застряли. –

ответ

2

Что-то вроде этого

var str = "contact_informaton_monday"; 
var sb = new StringBuilder(); 
foreach(var s in str.Split("_")) 
{ 
    sb.Append(s.Substring(0, 1).toUpper()); 
    sb.Append(s.Substring(1)); 
} 
str = sb.ToString(); 
1

Вы можете разбить строку на символ "_". После этого все под гору.

1

Разбивает строку:

var s = "contact_informaton_monday"; 
var final = ""; 
foreach (var split in s.Split('_')) 
    final += split.Substring(0, 1).ToUpper() + split.Substring(1); 

Или регулярные выражения:

var s = "contact_informaton_monday"; 
s = Regex.Replace(s, @"(\b|_)[a-z]", e => e.Value.ToUpper()); 
s = Regex.Replace(s, "_", ""); 
// s=ContactInformationMonday 
1
str.Split("_").ForEach(x => char.ToUpper(x[0]) + x.Substring(1)).ToArray().Join(); 
2
var textInfo = new CultureInfo("en-US", false).TextInfo; 
var input = "contact_informaton_monday"; 
var output = string.Concat(
    input.Split('_').Select(i => textInfo.ToTitleCase(i)) 
); 
+0

Для примера это будет работать, но 'ToTitleCase' не будет использовать первую букву слов, например, и ect. –

+0

@Ash Burlaczenko, [как правило, титульный корпус преобразует первый символ слова в верхний регистр] (http://msdn.microsoft.com/en-us/library/system.globalization.textinfo.totitlecase.aspx) (раздел Замечания) – Alex

1
string outputWord = ""; 
string word = "contact_informaton_monday"; 
foreach (var s in word.Split('_')) 
{ 
    outputWord += s.Substring(0, 1).ToUpper() + s.Substring(1); 
} 
Смежные вопросы