2009-06-26 41 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()