2009-06-26 64 views
1

這個問題是沿着HTML table horizontal spacing追加html空間算法

我們有一箇舊的代碼庫,不能使用css。當表中的整個列爲空時,生成的表非常難看。我們有一個文本電子郵件解決方案,最後添加一些空格,直到您使用New String指定的剩餘字符集爲止。由於新字符串只需要一個字符,就可以看到一行代碼,以及人們可以想到的少量代碼示例。

我們.NET中使用3.5SP1

Public Function StringSize(ByVal data As String, ByVal size As Short, ByVal usehtml As Boolean) As String 
    If data.Length > size Then 
     Return Left(data, size - 4) & "... " 
    Else 
     If usehtml Then 
      'small algorithm here (& nbsp ;) 
     Else 
      Return data & New String(" ", size - Len(data)) 
     End If 
    End If 
End Function 
+1

您可以使用.NET 3.5 SP1,但不能使用CSS? – Kredns 2009-06-26 21:46:48

回答

1

如果你真的要墊 ,然後 - 嗯,坦率地說 - 我不知道這是一個偉大的想法,但類似(原諒C#):

int count = size - data.Length; 
StringBuilder sb = new StringBuilder(
    data, data.Length + (6 * count)); 
for(int i = 0 ; i < count ; i++) { 
    sb.Append("&nbsp;"); 
} 
string s = sb.ToString(); 

以下是不好的用LINQ做一行的方法;僅包含以下用途:

string s = data + string.Concat(Enumerable.Repeat("&nbsp;", size - data.Length).ToArray()); 
+2

我認爲downvote是使用C#...這只是一個小東西;翻譯對於熟悉VB的人來說絕對是微不足道的......我認爲在VB中的答案對於大多數「C#」問題都是好的,對於大多數「VB」問題,C#中的答案很好 - 因爲大部分時間問題是關於框架,而不是語言。很顯然,對於* language *具體而言,這很重要。但這不是一個語言問題。 – 2009-06-26 21:54:21

1

你最好的選擇是使用StringBuilder和for循環。

Dim builder As New System.Text.StringBuilder() 
For i = 1 To size - Len(data) 
    ' Be sure to take out the space in the nbsp, Stack Overflow doesn't like it for some reason. 
    builder.Append("& nbsp;") 
Next 
Return builder.ToString()