2012-03-28 89 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(" "); 
} 
相關問題