使用單字符分隔符將字符串拆分爲兩部分的最佳方法是什麼?如何在c#中使用字符分隔符將字符串拆分爲兩部分?
該字符串應該在分隔符的第一個實例上分割。該方法應考慮性能。它不應該假定分隔符存在於字符串中,字符串中有任何字符等。應該是通用代碼,只要你需要插入即可。
(這總讓我幾分鐘的時間來改寫這樣的事情,每當我需要它,所以我想我會成爲一個問題,因爲它)
使用單字符分隔符將字符串拆分爲兩部分的最佳方法是什麼?如何在c#中使用字符分隔符將字符串拆分爲兩部分?
該字符串應該在分隔符的第一個實例上分割。該方法應考慮性能。它不應該假定分隔符存在於字符串中,字符串中有任何字符等。應該是通用代碼,只要你需要插入即可。
(這總讓我幾分鐘的時間來改寫這樣的事情,每當我需要它,所以我想我會成爲一個問題,因爲它)
如果你真的想只有兩個結果,使用字符串分割方法與第2個參數:
string[] words = myString.Split(new char[]{' '}, 2);
string[] SplitStringInTwo(string input, char separator)
{
string[] results = new string[2];
if (string.IsNullOrEmpty(input)) return results;
int splitPos = input.IndexOf(separator);
if (splitPos <= 0) return results;
results[0] = input.Substring(0, splitPos);
if (splitPos<input.Length)
results[1] = input.Substring(splitPos + 1);
return results;
}
爲什麼這麼做的時候,已經有一個像slfan這樣的方法指出了。 – 2011-05-22 13:15:01
@Roopesh:如果分割字符出現多次? – 2011-05-22 13:17:22
@Karlsen - 有一個選項。檢查slfan的更新回覆。 – 2011-05-22 14:38:53
var part1 = myString.SubString(0, myString.IndexOf(''));
var part2 = myString.SubString(myString.IndexOf(''), myString.Lenght);
我會先檢查字符,以防止第二行代碼上出現-1異常。 – 2011-05-22 13:12:55
沒錯,我只是假設他知道這個字符是事先存在的。 – 2011-05-22 13:18:48
我不能認爲char是事先存在的;這是什麼使這不是一個完全不重要的問題的一部分。同樣,性能方面,這會計算IndexOf兩次,對於大字符串來說可能很重要(儘管很小)。另外我認爲part2將包含分隔符。 – Rory 2011-05-22 13:24:22
(這總讓我幾分鐘的時間來改寫這一類的,每當我需要的東西,所以我以爲我會提出一個問題)
如果你需要這個頻繁,你可以轉換你的首選方式到extension method。基於Teoman Soygul的建議:
public static class StringExtensions
{
public static string[] TwoParts(this String str, char splitCharacter)
{
int splitIndex = str.IndexOf(splitCharacter);
if(splitIndex == -1)
throw new ArgumentException("Split character not found.");
return new string[] {
str.SubString(0, splitIndex),
str.SubString(splitIndex, myString.Lenght) };
}
}
這可能會返回兩個以上的部分,而不是一個字符串分成兩個。 – 2011-05-22 13:15:58
我添加了另一個版本的String.split,它可以做到這一點。 – slfan 2011-05-22 13:25:42
哦,是的,我總是忘記那個版本的Split() - 這正是我想要的。 – Rory 2011-05-22 13:32:26