【问题标题】:Break non-hyphenated compound words at word boundary在单词边界处打断非连字符的复合词
【发布时间】:2016-04-22 11:14:35
【问题描述】:

我正在使用Bootstrap。假设我的文本如下所示:

“堆栈溢出”

如果文本不适合容器,我能否以某种方式自动确保它像这样中断:

“堆栈
-溢出”

代替:

“斯塔科夫
-erflow"

使用 HTML/CSS?

【问题讨论】:

  • 我认为没有任何选择
  • 不是必须是Stack-overflow吗?用荷兰语这是正确的方法,不知道用英语顺便说一句...
  • 可能值得注意的是,如果您在文档中写入 SO 的名称,它实际上命名为 Stack Overflow(带空格),而不是 Stackoverflow ;)
  • 我们可以假设这是一个复合词的例子,而不是实际的文本,而不是告诉 OP 问题是他们拼写 Stack Overflow 错误吗?作为一个一般性问题,我认为这对其他人有帮助。

标签: html twitter-bootstrap css


【解决方案1】:

您可以插入­(软连字符)

#box {
  font-size:14px;
  font-family:courier;
  width:90px;
  background:yellow;
 }
<div id="box">Stack­overflow</div>

【讨论】:

  • 如果您不能使用­,因为您没有使用 (X)HTML 的某些变体(XML、Markdown、纯文本……),您可以使用等效的 Unicode 字符 U+00AD ( ­ 在 XML 中)。
【解决方案2】:

你可以使用<wbr>标签:

p {
  width: 60px;
  border: 1px solid black;
}
<p>Stack<wbr>overflow</p>

【讨论】:

  • 这不会连字符break,我认为这不是OP正在寻找的。​​span>
  • 你可以用 css 在 wbr 标签处添加连字符。
【解决方案3】:

不,对于文档,“Stackoverflow”是一个单词。如果您使用 CSS 属性来打断单词,那么它将根据可用空间来打断。

如果你想从一个特定的点打破它,你必须定义它。

您可以使用Stack<wbr>overflowStack-overflow

如果使用Stack<wbr>overflow,那么它将在<wbr>处被破坏。

p.test1 {
    width: 60px;
    border: 1px solid #000000;
}
<p class="test1">Stack<wbr>overflow</p>

或者,如果使用 Stack-overflow 并使用 CSS 属性 word-break: keep-all; 那么它将在连字符处被破坏:

p.test1 {
    width: 60px;
    border: 1px solid #000000;
    word-break: keep-all;
}
<p class="test1">Stack-overflow</p>

但你必须定义其中之一。

【讨论】:

  • <wbr> 没有用断字连字,我不认为这是要求的。
  • 在带有破折号 (-) 的示例中,即使单词适合,破折号也会出现。
  • @bergi 这就是为什么我也给出了另一个答案
【解决方案4】:

如果你想打断一个特定的词,那么给出的答案就可以了——插入某种不可见的打断。正如所指出的,它确实会损害搜索结果,但并没有您想象的那么糟糕。

如果你想打破所有需要换行的复合词,而不需要手动检查和检查,那么没有办法做到这一点,因为你需要上下文-敏感的英语语言解析,这意味着你需要人脑来做。

考虑如何破坏以下字符串:

lowrateslender.com
musictoyourears.com
heresearch.com
nakedsnow.com
picturespain.com
catspaying.net
attackshoes.com
williamsharp.net
andreward.net
goalsnow.net
hesstruck.net
artistrap.com
buildingskill.com
bearspray.com
atticsweep.com
matthewhale.com
singershaven.com
shoesworn.com
sinuscatscan.com
cometart.com
monkeyslap.com
scriptshack.com
nasalbum.com
moviesick.com
arizonasparesort.com
privateshot.com
nationsprinting.com
importcarshow.com

(从谷歌搜索“模糊域名”复制粘贴)

...即使给定一个字典来识别这些术语中的整个单词,并在这些边界处插入分隔空格,是否将这些单词拆分为“import-car-show”也是一个折腾”或“进口汽车如何”。

编程的主要技能之一是识别需要自然语言处理的算法,并选择“足够好”的算法,而不是在它上面浪费时间。就是这样一个例子。

【讨论】:

  • 这正是­ 的用途。它不会中断搜索。
  • @Bergi 您使用什么算法将其插入正确的位置?你最终会遇到同样的问题。域本质上不包含­
  • ­作者 插入到 HTML 源代码中,而不是通过自动换行算法。
  • @Bergi 在这种情况下,我请您参考我回答的第一句话。
【解决方案5】:

您可以使用零宽度空间,​。只需在 HTML 中输入 Stack​overflow

【讨论】:

  • 这个解决方案确实是错误的。例如,它会破坏搜索。
  • 没有比这更骇人听闻的了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-22
相关资源
最近更新 更多