2009-06-26 11 views
1

Cette question est le long des lignes de HTML table horizontal spacingAppend algorithme espace html

Nous avons une ancienne base de code et ne peut pas utiliser css. Quand une colonne entière dans une table est vide, la table résultante est très moche. Nous avons une solution de messagerie texte qui ajoute des espaces à la fin d'un mot jusqu'à l'ensemble des caractères restants que vous spécifiez en utilisant New String. Puisque New String ne prend qu'un char, il voyait ce que 1 ligne, une petite quantité d'exemples de code pourrait proposer.

Nous utilisons .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

Vous pouvez utiliser .NET 3.5 SP1 mais vous ne pouvez pas utiliser CSS? – Kredns

Répondre

1

Si vous vraiment voulez pad avec  , puis - bien, franchement - je ne suis pas sûr que c'est une excellente idée, mais quelque chose comme (excusez le 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(); 

Ce qui suit est un mauvais façon de le faire en une ligne avec LINQ; inclus seulement pour intérêt:

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

Je suppose que le downvote est pour utiliser C# ... qui est juste petit; la traduction est absolument triviale pour quelqu'un de familier avec VB ... Je maintiens qu'une réponse dans VB est bien pour la plupart des questions "C#", et une réponse dans C# est bien pour la plupart des questions "VB" - comme la plupart du temps, le question est vraiment sur le cadre, pas la langue. Évidemment pour les spécificités * de la langue *, cela importerait. Mais ce n'est pas une question de langue. –

+0

Freaky! Le   disparaît lorsqu'il est formaté ... –

1

Votre meilleure option est d'utiliser un StringBuilder et une boucle 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()