如何在java中计算div服务器端的文本行数

如何在java中计算div服务器端的文本行数,java,Java,我需要计算一些保存的文本在显示时需要的行数 文本最终将以500像素宽的div显示-增加的复杂性是文本可能包含\n,因此我必须将这些因素也考虑到行号计算中 提前感谢。假设您有一些字符串: String text = "foo\nbar\baz"; int lines = text.trim().split("\n").length; 如果要同时计算末尾的空行,请跳过修剪 将字体设置字体系列、样式、大小更改为您的设置。您确定需要在服务器端解决此问题吗?你能再解释一下这个问题吗。也许可以在客户端上解

我需要计算一些保存的文本在显示时需要的行数

文本最终将以500像素宽的div显示-增加的复杂性是文本可能包含\n,因此我必须将这些因素也考虑到行号计算中


提前感谢。

假设您有一些字符串:

String text = "foo\nbar\baz";
int lines = text.trim().split("\n").length;
如果要同时计算末尾的空行,请跳过修剪


将字体设置字体系列、样式、大小更改为您的设置。

您确定需要在服务器端解决此问题吗?你能再解释一下这个问题吗。也许可以在客户端上解决这个问题。处理固定数量的像素可能不够,您还必须考虑字体大小/字体系列。您应该使用相对于字体em,pt的计量单位。在计算中包括的内部填充。此外,您可能还需要考虑不同的浏览器版本。:-与mars注释一样,准确的行数将与文本一起保留。这些信息将用于计算文档长度。要求是不同类别的文本将有不同的宽度,但客户必须一次显示一个A4页面的累积信息,以反映通过PDF生成的硬拷贝文件。对不起,但我不理解您的要求。我的理解是:你想在网页上显示一些文本,就像它在单独生成的PDF中显示一样。正确吗?但这并没有解决宽度问题。你忘了考虑,文本也会有换行符,这取决于文本的大小、字体和大小、浏览器版本和火星上的天气…@nfechner-你说得更好:无法在服务器端预测浏览器将如何包装文本。它可能有不同的字体,不同的文本缩放,不同的DPI…这是正确的,如果网站上使用的字体有相同的指标。Serif不是一个固定的字体名称,在许多系统上都会被替换。我还需要在行计数中包含\n换行符。因此,如果有换行符,行数将增加1,但如果行上它前面的文本不超过500,则该文本将不再包括在计算中。@user456147:请参阅我所做的更改。
Font font = new Font("Serif", Font.PLAIN, 12);
FontMetrics fontMetrics = getFontMetrics(font);

String text = "a line\nanother line\nsome more line";
String[] lines = text.split("\n");
int lineCount = lines.length;

for(String line : lines) {
    int width = fontMetrics.stringWidth(line); 
    lineCount += (width / 500) > 1 ? (width / 500) - 1 : 0;
}