2009-09-14 52 views
0

如何为字符串创建我自己的字包装函数?我希望每行不超过50个字符,并尊重现有的CRLF。为字符串创建我自己的字包装器

+0

你的意思是你想添加一个新行,如果没有一个已经每50个字符? – RichardOD 2009-09-14 13:31:57

回答

1

这样的事情,这将让你开始(只是一个快速samle我一起捣碎):

Private Sub Doit()  
    Dim Source As String = "" 
    Source &= "How to make my own word wrap function for string, I want each line to be no longer than 50chars and take respect existing CRLFs" & vbCrLf & vbCrLf 
    Source &= "So this will be a new row." 
    Dim wrappedtext As String = wrap(Source, 20, vbNewLine) 
    MsgBox(wrappedtext) 
End Sub 

Function wrap(ByVal text As String, ByVal maxlength As Integer, ByVal newline As String) As String 

    Dim tmp() As String = Split(text.Replace(vbCrLf, " | "), " ") 
    Dim ret As String = "" 
    Dim wrk As String = "" 
    For Each word As String In tmp 
     If word = "|" Then 
      ret &= newline 
      wrk = "" 
     ElseIf word = "" Then 

     Else 

      If Len(wrk & word) <= maxlength Then 
       wrk &= " " & word 
      Else 
       ret &= wrk & newline 
       wrk = word & " " 
      End If 

     End If 
    Next 
    If wrk <> "" Then ret &= wrk 
    Return ret 
End Function 
+0

谢谢,不错的代码,但有时会留下中间的单词!也有双倍的时间空间。 – Tom 2009-09-14 14:10:34

+0

是的。我只是把它放在一起,所以它只是一个“原型”。但从那里解决它不应该是一件困难的任务。 – Stefan 2009-09-14 14:26:05

0

从哪个角度来看?软件架构?

看看装饰模式。如果您喜欢使用流,请在“Heads First:Design Patterns”一书中提出一个字符串修饰符。它是用Java编写的,但一般编程概念的描述很好。有些页面丢失,但您可以找到许多信息here

该算法本身是微不足道的,不是吗?

相关问题