字符串$的C#相當於是否有一個優雅的linqy方式來做到這一點?什麼是從基本
我想要做的就是創建給定長度的字符串到那個長度
所以對於長度由了另一串的倍數 - 9和輸入字符串「XXX」我得到「XXXXXXXXX」(即長度9)
非整數倍然後我想截斷線。
我可以很容易地使用循環和StringBuilder來做到這一點,但我期待看看這種語言能否輕鬆地表達這個想法。
(FYI我正在爲我的兒子復活節數學作業)
字符串$的C#相當於是否有一個優雅的linqy方式來做到這一點?什麼是從基本
我想要做的就是創建給定長度的字符串到那個長度
所以對於長度由了另一串的倍數 - 9和輸入字符串「XXX」我得到「XXXXXXXXX」(即長度9)
非整數倍然後我想截斷線。
我可以很容易地使用循環和StringBuilder來做到這一點,但我期待看看這種語言能否輕鬆地表達這個想法。
(FYI我正在爲我的兒子復活節數學作業)
不,沒什麼簡單和優雅 - 你必須自己基本編碼。
您可以創建一個字符串與一些重複的字符,但OT重複的字符串, 即
string s = new string("#", 6); // s = "######"
爲了用繩子做到這一點,你就需要一個循環將它們串聯,然後easest會是使用子串以截斷到所期望的最終長度 - 沿着線:
string FillString(string text, int count)
{
StringBuilder s = new StringBuilder();
for(int i = 0; i <= count/text.Length; i++)
s.Add(text);
return(s.ToString().Substring(count));
}
Aha字符串構造 - 謝謝。 – 2010-04-16 00:26:39
我Linqy(;))解決方案是創建一個擴展方法。 Linq是語言集成查詢,那麼爲什麼濫用?林非常確定這是可能的,因爲你可以創建新的(匿名)對象,但爲什麼...?
我其實是想創建一個字符串的解決方案,而不是如何使用它的,我想我應該用一些很酷的東西在說System.Linq命名空間。你說得對,linq就是查詢。 – 2010-04-16 00:25:10
一種可能的方案使用Enumerable.Repeat
。
const int TargetLength = 10;
string pattern = "xxx";
int repeatCount = TargetLength/pattern.Length + 1;
string result = String.Concat(Enumerable.Repeat(pattern, repeatCount).ToArray());
result = result.Substring(0, TargetLength);
Console.WriteLine(result);
Console.WriteLine(result.Length);
Enumerable.Repeat。這是我一直在尋找的東西,謝謝。 – 2010-04-16 00:26:15
我不認爲這就是字符串$所做的是它 – NibblyPig 2010-04-15 22:00:30