如何使数据库中的文本字段自动换行到特定宽度,同时保持段落间距?

How to I get a text field from a database to word wrap to a specific width, while maintaining paragraph spacing?

提问人:Penguin 提问时间:8/27/2023 最后编辑:JohnPenguin 更新时间:8/28/2023 访问量:93

问:

我已经研究了好几天了,我尝试过的一切都失败了。 我正在使用经典的 ASP 和 MySql 数据库。

我不知道还能去哪里。我在这里读过类似的问题,但解决方案对我不起作用。

任何帮助将不胜感激。

我尝试使用,这给了我正确的换行,但没有保持段落间距。<p STYLE="word-wrap: break-word;width:200"><%=V12%></p>

我尝试使用,这给了我间距,但没有给我换行。<pre>

我试过了,但什么也没做。V12 = Replace(INFO1("STORY_"),vbCrLf,"<BR>")

CSS ASP-经典 文本字段 行距

评论

0赞 Adam 8/27/2023
我怀疑您可能正在尝试替换回车换行符(或),而实际上它只是换行符(或)。尝试将其替换为结束和开始段落标记,并将相同的标记换行到 DB 文本中。VBCrLfChr(13)VBLfChr(10)V12 = "<p>" & Replace(INFO1("STORY_"),vblf,"</p><p>") & "</p>"
0赞 Penguin 8/27/2023
这行得通!!非常感谢!!
1赞 John 8/28/2023
@Adam - 如果这有效,那么您应该提供它作为答案,以便您可以为此获得一些积分。

答:

1赞 John 8/27/2023 #1

保留我曾经使用的数据库字段中的换行符

replace(rs("myfieldname"),chr(13),"<br>")

但是,在过去的几年里,我一直在使用 CSS 风格。它(显然)是客户端代码,因此您可以将其用于您拥有的任何后端。white-space: pre-line

1赞 Adam 8/28/2023 #2

您需要更换时进行更换(或理想情况下两者兼而有之)。VBCrLfVBLf

根据用于创建字符串的操作系统/软件,换行符可以表示为换行符 ( or ) 或回车符换行符 ( or )。您可以自行进行回车,但我认为这不会启动新行。VBLfChr(10)VBCrLfChr(13)

这个答案/线程很好地解释了它:

https://stackoverflow.com/a/12747850/4901783

因此,在替换换行符时,您需要同时检查 和 。VBLfVBCrLf

至于段落格式,将换行符替换为将关闭现有段落并打开一个新段落。只要你也把输出包装在标记中。</p><p>p

您可以在函数中执行所有这些操作,例如:

Function lb_to_p(ByVal Str)

    Str = Trim(Str)

     ' Replace all line breaks with </p><p> to indicate that the paragraph 
     ' has ended and a new one should start.

    Str = Replace(Str,VBCrLf,"</p><p>")
    Str = Replace(Str,VBCr,"</p><p>")
    Str = Replace(Str,VBLf,"</p><p>")

    ' Wrap the string in paragraph markers.

    Str = "<p>" & Str & "</p>"

    ' Remove any instances of <p></p>. This could happen if there's consecutive  
    ' line breaks, or the string starts or ends with a line break. 

    Str = Replace(Str,"<p></p>","")

    lb_to_p= Str

End Function