我有一個字符串,我想基於一個int變量在該字符串的開頭添加一些空格。
我想要做這樣的事情:如何以編程方式在C#中創建字符串?
int NumberOfTabs = 2;
string line = "my line";
string line = String.Format("{0}{1}", " " * NumberOfTabs, line);
...現在線將有8位
什麼是最簡單的方法是什麼?
我有一個字符串,我想基於一個int變量在該字符串的開頭添加一些空格。
我想要做這樣的事情:如何以編程方式在C#中創建字符串?
int NumberOfTabs = 2;
string line = "my line";
string line = String.Format("{0}{1}", " " * NumberOfTabs, line);
...現在線將有8位
什麼是最簡單的方法是什麼?
可以使用String(char, Int32)構造是這樣的:
string line = String.Format("{0}{1}", new String(' ', NumberofTabs * 4), line);
或略偏高效:
string line = String.Concat(new String(' ', NumberofTabs * 4), line);
,或者有點更簡潔:)
string line = new String(' ', NumberofTabs * 4).Concat(line);
評論提出了一個很好的觀點,我F你要真正有製表符,只是改變' '
到'\t'
,並採取了* 4
這樣的:
string line = String.Concat(new String('\t', NumberofTabs), line);
@丹尼 - 這就是原來發布的,可能是代碼縮進?在任何情況下,你都可以用''t''代替'''',如果需要真正的標籤,則取下'* 4'。 – 2010-03-09 18:25:48
你是對的,我刪除了我的評論 – 2010-03-09 18:26:46
@丹尼 - 你是對的,這絕對是一個有效的點,有人可能會遇到這種嘗試,只是在以後。 – 2010-03-09 18:28:42
new string(' ', NumberOfTabs)
繼續討論OP問題,它似乎應該是'NumberOfTabs * 4' – 2010-03-09 18:20:50
int i=8;
System.Text.StringBuilder sb = new System.Text.StringBuilder();
sb.Append(" ", i);
不是「最清晰」的答案,但獲得了一個直接的+1。 – Beska 2010-03-09 18:25:03
這是最明智的答案,他正在使用stringbuilder類,字符串是不可變的。 http://msdn.microsoft.com/en-us/library/system.text.stringbuilder.aspx – 2010-03-09 18:31:30
@Joe - 是的,字符串是不可變的,它是什麼? – 2010-03-09 19:08:51
str = str.PadLeft(str.Length+tabs*4);
你可以使用這樣的事情:
String.Empty.PadRight(NumberOfTabs)
您可以創建一個包含自定義數量的空格的新字符串。不幸的是,在Python中沒有字符串乘法(" " * 2
)。但是你可以乘以4的空格數獲得「標籤」:
int numberOfTabs = 2;
string line = "my line";
string whitespaces = new string(' ', numberOfTabs * 4);
string s = whitespaces + line;
您可以在文本的開頭這樣添加標籤:
line.PadLeft(NumberOfTabs, '\t');
\ t是轉義字符「標籤」 (Inserting a tab character into text using C#)
int NumberOfTabs = 2;
string line = "my line";
string results = line.PadLeft(line.Length + NumberOfTabs, ' ');
在C#字符串是不可變的。你應該真的使用stringbuilder類。
示例代碼中列出了鏈接:
http://msdn.microsoft.com/en-us/library/system.text.stringbuilder.aspx
不變性與這個問題沒有任何關係...... – 2010-03-09 19:01:05
是的,每當你連接一個字符串,你創建一個新的不需要的字符串。使用stringbuilder可以防止這種情況,並且是推薦的方法來增加操作系統試圖執行的字符串的長度。 – 2010-03-09 19:21:40
對於少量的連接,StringBuilder比它節省的開銷更多。 – 2010-03-09 19:35:18
不受任何措施最好的答案,但這裏有一個有趣的一個,一點點LINQ一行代碼:
var result = new string(Enumerable.Repeat(' ', count).Concat("my line").ToArray());
雖然不你問的問題,用'+'進行字符串連接對於簡單的情況,比如'new string('',NumberOfTabs)+ line',要比'string.Format'更快更清晰,更簡單和快捷(如果重要的話)「 – 2010-03-09 18:22:46