2012-03-28 94 views
0

我想要做的是当单词丰富行的末尾以将单词分成两个单词并在换行符之前插入连字符时。它与<wbr>标记相似,但不会插入任何内容。
例子:如何在字母之间插入连字符而不是换行符?

Java- <--- I want to insert this hyphen before line-break 
Script 

Ja- <---- Same here 
vaScript 

反正有做这件事的?我不介意使用php,javaScript,但jQuery会更好,如果我可以使用CSSHTML来实现它,那会很好。 Thnx提前!

+1

你想,当用户改变浏览器中的连字符自动移动? (另外,根据第二个示例的连字符会导致难以阅读的副本 - 您为什么要这么做?) – nnnnnn 2012-03-28 04:59:59

+0

我认为使用javascript作为一般情况会很困难,添加连字符可能会改变布局并可能将已插入的连字符移动到错误的地方。插入的连字符将需要能够被识别(以允许在窗口调整大小或其他布局改变时重新连字),因此可能它们应该在具有适当类的SPAN元素(例如,插入的阴影)中。正如在一个答案中指出的那样,你需要[一套连字规则](http://en.wikipedia.org/wiki/Hyphen),你不能简单地添加字符,直到行几乎满了,插入一个连字符并继续。 – RobG 2012-03-28 05:24:11

+0

软连字符“­”能帮助你吗? – inhan 2012-03-28 05:40:24

回答

1

如果你想在客户端做,你需要一个连字符插件。原因在于,需要有一个关于连字规则的字典,这不仅仅包含在浏览器中。 [更新:虽然,该声明已经部分错误!克里斯的链接显示有限(非常有限,但仍然...承诺!)支持。]

这里是我找到的一个jQuery插件:http://archive.plugins.jquery.com/plugin-tags/hyphenation,我知道我之前在项目中使用过一个)。它当然会将连字符插入到节点的内容中,但内容不需要包含它,DOM准备好之后由函数计算连字符。

这些规则是否足够广泛以至于能够分解超出“规范”范围的词语是另一个问题。

附注:JavaScript是一个专有名词,它应该从连字符中排除。尽管如此,我想这只是一个例子而已。 ;-)

+0

咋,'JavaScript'是我的头!我完全忘记了jQuery插件几乎可以满足所有你想要的东西。 Thnx for plugin! – FoxKllD 2012-03-30 03:14:08

0

此功能应该可以解决您的问题。
它插入软连字符| $害羞;分成“长”字样。


  • pText =您的字符串
  • PMAX =每X字符的单词中插入软连字符;

function hyphen(pText, pMax){ 
     var t = pText.split(" "); 
     for(i=0; i<t.length; i++){ 
       if(t[i].length<pMax){ 
         var w = t[i] 
         var re = new RegExp("(.{"+pMax+"})","g"); 
         if(w.length<pMax+3){ 
           var pos = t[i].length - 3; 
           re = new RegExp("(.{"+ pos +"})","g"); 
         } 
         t[i] = w.replace(re,"$1"+&shy;); 
       } 
     } 
     return t.join(" "); 
} 
相关问题