如何在字母之间插入连字符而不是换行符?

时间:2012-03-28 04:51:57

标签: php javascript jquery

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

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

Ja- <---- Same here
vaScript

无论如何都这样做?我不介意使用phpjavaScript,但jQuery会更好,如果我可以使用CSSHTML来实现它,那将是很棒的。 Thnx提前!

3 个答案:

答案 0 :(得分:1)

看起来有一些limited browser support for CSS hyphenation。这对你有用吗?

答案 1 :(得分:1)

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

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

规则是否足够广泛,可以打破“规范”之外的词语,这是另一个问题。

附注:JavaScript是一个专有名词,应该从连字符中排除。不过,我想这只是一个例子。 ; - )

答案 2 :(得分:0)

此功能可以解决您的问题。
插入 Soft Hyphen | $ shy; 进入“long”字样。


  • pText =您的字符串
  • pMax =单词中的每个X字符都插入一个Soft Hyphen;

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(" ");
}