基于带省略号长度的java jruby修剪字符串
这是一个相当具体的问题,但我想知道是否有人会有一个绝妙的解决方案。我试图将一个固定字体大小的字符串放入一个任意大小的框中,这样,如果整个字符串不合适,我想修剪它并添加一个省略号(…)
所以,如果我的文本是“荷兰”,我想确定它的哪一部分适合我的任意大小的盒子,看起来像“荷兰……”
我使用的是jruby,所以java或ruby也可以。除了一个字符一个字符地修剪/测试字符串是否合适之外,我想不出一个好办法。因为它不是固定宽度的字体,所以我不能把每个字符都当作相同的宽度,这会让这更容易
有什么想法或建议可以给我指明正确的方向吗
# 1 楼答案
逐字符循环可能很好。但是,如果你正在做数十亿个字符,并且需要加快它们的速度,你可以通过二进制搜索来找到正确的长度,而不是仅仅遍历字符。这里有一个通用的二进制搜索方法,你可以调用一个整数。给它一个<=>;返回-x0或+x的比较块,每次迭代跳转一半,直到测试返回0或跳转大小变小
然后像这样使用: