後刪除文本我有一個具有以下格式的字符串:字符串發生
string sample = "A, ABC, 1, ACS,,"
正如你所看到的,也有,
字符的5個出現次數。 我需要4發生後,除去一切,這樣最終的結果將是:
string result = fx(sample, 4);
"A, ABC, 1, ACS"
是否有可能沒有foreach
?提前致謝。
後刪除文本我有一個具有以下格式的字符串:字符串發生
string sample = "A, ABC, 1, ACS,,"
正如你所看到的,也有,
字符的5個出現次數。 我需要4發生後,除去一切,這樣最終的結果將是:
string result = fx(sample, 4);
"A, ABC, 1, ACS"
是否有可能沒有foreach
?提前致謝。
你可以做這樣的事情:
sample.Split(',').Take(4).Aggregate((s1, s2) => s1 + "," + s2).Substring(1);
這將在逗號分割的字符串,然後只取前四項( "A"
, " ABC"
, " 1"
," ACS"
),將它們連接到一個字符串與Aggregate
(結果:",A, ABC, 1, ACS"
)和ret除第一個字符以外的所有東西。結果:"A, ABC, 1, ACS"
。
使用String.Substring方法
http://msdn.microsoft.com/en-us/library/system.string.substring(v=VS.100).aspx
你可以使用,如果與string.replace它始終是兩個逗號末
假設你想,如果沒有足夠的逗號,以滿足計數返回完整的字符串
String fx(String str, Int32 commaCount)
{
if (String.IsNullOrEmpty(str)) return str;
var i = 0;
var strLength = str.Length;
while ((commaCount-- > 0) && (i != -1) && (i < strLength)) i = str.IndexOf(",", i + 1);
return (i == -1 ? str : str.Substring(i));
}
如果使用從this question的GetNthIndex
方法,你可以使用String.Substring
:
public int GetNthIndex(string s, char t, int n)
{
int count = 0;
for (int i = 0; i < s.Length; i++)
{
if (s[i] == t)
{
count++;
if (count == n)
{
return i;
}
}
}
return -1;
}
所以,你可以做到以下幾點:
string sample = "A, ABC, 1, ACS,,";
int index = GetNthIndex(sample, ',', 4);
string result = sample.Substring(0, index);
會不會有永遠是,,在年底或莫不是他們之間的事情? – Slotty 2011-02-23 14:17:31