2009-06-26 4 views
1

Diese Frage ist nach dem Vorbild der HTML table horizontal spacingAnfügen html Raum Algorithmus

Wir haben eine alte Code-Basis und können nicht mit CSS. Wenn eine ganze Spalte in einer Tabelle leer ist, ist die resultierende Tabelle sehr hässlich. Wir haben eine Text-E-Mail-Lösung, die Leerzeichen am Ende eines Wortes hinzufügt, bis auf die verbleibenden Zeichen, die Sie mit New String angeben. Da New String nur einen Char braucht, war zu sehen, was 1 Liner, kleine Menge von Codebeispielen, die Menschen sich vorstellen können.

Wir verwenden .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

Sie können .NET 3.5 SP1 verwenden, aber Sie können CSS nicht verwenden? – Kredns

Antwort

1

Wenn Sie wirklich mit   aufzufüllen wollen, dann - na ja, ehrlich gesagt - ich bin nicht sicher, ob es eine gute Idee ist, aber so etwas wie (entschuldigen Sie das 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(); 

Das Folgende ist eine schlechte Weise, es in einer Zeile mit LINQ zu tun; nur für Interesse enthalten:

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

Ich nehme an, der Downvote ist für die Verwendung von C# ... das ist nur kleinlich; die Übersetzung ist absolut trivial für jemanden, der mit VB vertraut ist ... Ich behaupte, dass eine Antwort in VB für die meisten "C#" - Fragen in Ordnung ist, und eine Antwort in C# ist für die meisten "VB" -Fragen in Ordnung - wie die meiste Zeit In der Frage geht es wirklich um den Rahmen, nicht um die Sprache. Offensichtlich für * Sprache * Besonderheiten wäre es wichtig. Aber das ist keine Sprachfrage. –

+0

Freaky! Die   verschwindet, wenn formatiert ... –

1

Ihre beste Möglichkeit ist, einen String und eine For-Schleife zu verwenden.

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() 
Verwandte Themen