我希望有人可以使用CFML帮助实现TeXHyphenator-J。
我正在使用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 :(得分:0)
然而它没有连字符
虽然不是很明显,但实际上的返回值是连字符。选择的hyphen character, ie \u00ad只是不可见。转储字符串中的每个字符显示软连字符的ascii值为173:
alias python=python3
因此,一个简单的解决方案是用标准连字符替换该字符:
97 : a
115 : s
173 : <== soft hyphen
115 : s
111 : o
173 : <== soft hyphen
99 : c
105 : i
97 : a
116 : t
101 : e
旁注,直接在java中运行相同的示例也产生了“as-so-ciate”, not “as-so-ci-ate”。