2017-01-18 43 views
2

我希望有人可以幫助使用CFML實現TeXHyphenator-J使用Coldfusion的JAVA連字符

我正在使用JavaLoader.cfc創建TeXHyphenator-J的ColdFusion對象(如下面的代碼所示)。運行代碼時,我不會收到任何錯誤,並返回一個字符串。但它不是連字符?

<!--- Load Javaloader ---> 
<cfset paths = arrayNew(1)> 
<cfset paths[1] = expandPath("assets/Hyphenator/texhyphj.jar")> 
<cfset loader = createObject("component", "assets.javaloader.JavaLoader").init(paths)> 

<!--- Create buffered stream to TeX file ---> 
<cfset FileInputStream = createobject("java", "java.io.FileInputStream").init(expandPath("assets/Hyphenator/hyphen.tex"))> 
<cfset BufferedInputStream = createobject("java","java.io.BufferedInputStream").init(FileInputStream)> 

<!--- Initiate Hyphenator ---> 
<cfset h = loader.create('net.davidashen.text.Hyphenator').init()> 
<!--- load the TeX table into Hyphenator ---> 
<cfset h.loadTable(BufferedInputStream)> 
<!--- Get hyphenated string, Hyphenator should return as-so-ci-ate ---> 
<cfset retStr = h.hyphenate('associate')> 

<cfdump var="#retStr#"> 

回答

0

但它是不是複姓

雖然不是很明顯,返回的值實際上複姓。所選的hyphen character, ie \u00ad只是不可見。傾倒字符串中的每個字符顯示的軟連字符有173 ASCII值:

97 : a 
115 : s 
173 : ­ <== soft hyphen 
115 : s 
111 : o 
173 : ­ <== soft hyphen 
99 : c 
105 : i 
97 : a 
116 : t 
101 : e 

所以一個簡單的解決辦法是更換一個標準的連字符該字符:

newString = replace(retStr, chr(173), "-", "all") 

側面說明,運行直接在java中的例子也產生了「as-so-ciate」,而不是「as-so-ci-ate」。