我需要在第二個之前大寫 - 從.NET中的字符串開始。做這個的最好方式是什麼?第二個短劃線之前的字符串可以是任何東西。一旦完成,我需要一個新的單個字符串。大寫的一切在.NET中的第n個字符之前
之前
Tt-Fga - Louisville - Kentucky
後
TT-FGA - Louisville - Kentucky
我需要在第二個之前大寫 - 從.NET中的字符串開始。做這個的最好方式是什麼?第二個短劃線之前的字符串可以是任何東西。一旦完成,我需要一個新的單個字符串。大寫的一切在.NET中的第n個字符之前
之前
Tt-Fga - Louisville - Kentucky
後
TT-FGA - Louisville - Kentucky
我繼續做下去。如果有更好的答案,讓我知道。
var parts = @event.EventParent.Name.Split(new[] {'-'}, StringSplitOptions.RemoveEmptyEntries);
for (int i = 0; i < parts.Length; i++)
{
if (i >= 2)
break;
parts[i] = parts[i].ToUpper();
}
@event.EventParent.Name = string.Join("-", parts);
分割將不必要地構造一個新的數組和額外的字符串,然後必須重新組合在一起。使用'IndexOf'更有效率。 – 2014-12-04 13:54:13
至少,使用指定最大元素數量的「Split」重載,以便將其限制爲3件。 – 2014-12-04 13:54:42
你試過的應該是你的問題。這樣你就不會在你的問題上吸引消極因素,因爲你顯然沒有在你的答案上做任何事情和消極因素,因爲它不是很好。 – weston 2014-12-04 13:56:11
你認爲正則表達式對於這麼簡單的工作有點沉重嗎?這無疑會慢得多。 – 2014-12-04 13:51:53
@DavidPfeffer它會慢一些,但問題是標籤正則表達式,所以爲什麼我們不能顯示OP的各種選擇,讓他選擇最好的? – vks 2014-12-04 13:55:35
這是一個公平點......我沒有注意到標籤。 – 2014-12-04 13:56:13
IndexOf
。你必須使用這個函數兩次,這樣你才能找到第一個連字符,然後找到第二個連字符。Substring
一樣的字符的子字符串。構建包含所有剩餘字符的子字符串。ToUpper
。這應該把工作爲您的特定情況下完成的:
public static string ToUpperUntilSecondHyphen(string text)
{
int index = text.IndexOf('-', text.IndexOf('-') + 1);
return text.Substring(0, index).ToUpper() + text.Substring(index);
}
一個更廣義的方法可以是這個樣子:
public static string ToUpperUntilNthOccurrenceOfChar(string text, char c, int occurrences)
{
if (occurrences > text.Count(x => x == c))
{
return text.ToUpper();
}
int index = 0;
for (int i = 0; i < occurrences; i++, index++)
{
index = text.IndexOf(c, index);
}
return text.Substring(0, index).ToUpper() + text.Substring(index);
}
分裂的連字符,.ToUpper()在數組的前兩個元素?不確定這是否太基本?你需要一種奇特的方式來做到這一點? – user1666620 2014-12-04 13:43:47
IndexOf找到第二個連字符,然後子字符串(第一部分).ToUpper +子字符串(第二部分) – 2014-12-04 13:44:26
Split String By - 並將其存儲到數組中。之後它使用ToUpper()作爲前兩個數組的元素.... – yash 2014-12-04 13:45:19