2010-03-09 57 views
6

我有一個字符串,我想基於一個int變量在該字符串的開頭添加一些空格。
我想要做這樣的事情:如何以編程方式在C#中創建字符串?

int NumberOfTabs = 2; 
string line = "my line"; 
string line = String.Format("{0}{1}", " " * NumberOfTabs, line); 

...現在線將有8位

什麼是最簡單的方法是什麼?

+1

雖然不你問的問題,用'+'進行字符串連接對於簡單的情況,比如'new string('',NumberOfTabs)+ line',要比'string.Format'更快更清晰,更簡單和快捷(如果重要的話)「 – 2010-03-09 18:22:46

回答

18

可以使用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); 
+0

@丹尼 - 這就是原來發布的,可能是代碼縮進?在任何情況下,你都可以用''t''代替'''',如果需要真正的標籤,則取下'* 4'。 – 2010-03-09 18:25:48

+0

你是對的,我刪除了我的評論 – 2010-03-09 18:26:46

+0

@丹尼 - 你是對的,這絕對是一個有效的點,有人可能會遇到這種嘗試,只是在以後。 – 2010-03-09 18:28:42

6
new string(' ', NumberOfTabs) 
+1

繼續討論OP問題,它似乎應該是'NumberOfTabs * 4' – 2010-03-09 18:20:50

8
int i=8; 
System.Text.StringBuilder sb = new System.Text.StringBuilder(); 
sb.Append(" ", i); 
+1

不是「最清晰」的答案,但獲得了一個直接的+1。 – Beska 2010-03-09 18:25:03

+0

這是最明智的答案,他正在使用stringbuilder類,字符串是不可變的。 http://msdn.microsoft.com/en-us/library/system.text.stringbuilder.aspx – 2010-03-09 18:31:30

+0

@Joe - 是的,字符串是不可變的,它是什麼? – 2010-03-09 19:08:51

4
str = str.PadLeft(str.Length+tabs*4); 
2

你可以使用這樣的事情:

String.Empty.PadRight(NumberOfTabs) 
0

您可以創建一個包含自定義數量的空格的新字符串。不幸的是,在Python中沒有字符串乘法(" " * 2)。但是你可以乘以4的空格數獲得「標籤」:

int numberOfTabs = 2; 
string line = "my line"; 
string whitespaces = new string(' ', numberOfTabs * 4); 
string s = whitespaces + line; 
2
int NumberOfTabs = 2; 
string line = "my line"; 
string results = line.PadLeft(line.Length + NumberOfTabs, ' '); 
3

在C#字符串是不可變的。你應該真的使用stringbuilder類。

示例代碼中列出了鏈接:

http://msdn.microsoft.com/en-us/library/system.text.stringbuilder.aspx

+0

不變性與這個問題沒有任何關係...... – 2010-03-09 19:01:05

+0

是的,每當你連接一個字符串,你創建一個新的不需要的字符串。使用stringbuilder可以防止這種情況,並且是推薦的方法來增加操作系統試圖執行的字符串的長度。 – 2010-03-09 19:21:40

+0

對於少量的連接,StringBuilder比它節省的開銷更多。 – 2010-03-09 19:35:18

2

不受任何措施最好的答案,但這裏有一個有趣的一個,一點點LINQ一行代碼:

var result = new string(Enumerable.Repeat(' ', count).Concat("my line").ToArray()); 
相關問題