【问题标题】:How to cut text by length in pixels?如何按像素长度切割文本?
【发布时间】:2015-04-07 07:52:34
【问题描述】:

我有一个算法问题: 有 4 个文本字符串应放在一行中,并用分隔符(即 |)分隔。整行的宽度是已知的(即 500px)。每个字符串包含不同长度的单词。我想放置前 n 个单词(n 取决于每个单词的长度):

  1. 一个
  2. 四五
  3. 六十九
  4. 一百一十六

我想得到 4 个长度大致相等的字符串。如果其中一个字符串比其他字符串小,则必须更长。即:

一个 |四五... |六十九 |一百个。

初始字符串的数量可以更少。在这种情况下,每个字符串的单词数必须更大。 即:

  1. 四五六
  2. 一百一十六

将是:

四五六 |一百一十六。

是否可以使用 CSS 执行此操作,或者我应该使用 Java 后端的 AffineTransform?我尝试使用这种方法,但它需要大量的资源和时间。

【问题讨论】:

    标签: java css


    【解决方案1】:

    遍历每个字符并检查是否可以添加,widthOf(char) 只返回字符的宽度,您必须为每个字符设置宽度并存储它们。

    StringBuilder final = "";
    int maxWidthPixel = 500;
    int currentWidthPixel = 0;
    for(int i = 0; i < text.length; i++) {
        char c = text.charAt(i);
        currentWidthPixel += widthOf(c);
        if(currentWidthPixel <= maxWidthPixel) {
            final.append(c);
        } else {
            break;
        }
    }
    
    return final.toString();
    

    编辑:这是 java 代码。

    【讨论】:

    • 如果我正确阅读了问题,我认为他正在寻找基于 css 的解决方案。
    • 是的,他更喜欢 css,但我不懂 css,不过如果他会两种语言,他应该能够将其转换为 css。
    • 这条评论让我很开心:)
    • Css 并不是传统意义上的编程语言。 de.wikipedia.org/wiki/Cascading_Style_Sheets。你不能真正将java转换为css。你的评论太棒了,而且显然比我今天的评论还要多! :D
    • @Filosssof,我认为您将不得不求助于使用 javascript/jquery,因为我认为没有 css 解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-12
    • 1970-01-01
    • 2020-06-17
    • 2018-02-21
    • 2020-12-19
    • 2023-03-17
    • 1970-01-01
    相关资源
    最近更新 更多