2017-01-18 2 views
2

Ich hatte gehofft, jemand kann mit der Implementierung von TeXHyphenator-J mit CFML helfen.JAVA Hyphenator mit Coldfusion

Ich verwende die JavaLoader.cfc, um ein ColdFusion-Objekt von TeXHyphenator-J zu erstellen (wie im folgenden Code). Beim Ausführen des Codes bekomme ich keine Fehler und eine Zeichenfolge wird zurückgegeben. Es ist jedoch nicht getrennt.

<!--- 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#"> 

Antwort

0

jedoch ist es nicht hyphenated

Zwar nicht sofort offensichtlich, der zurückgegebene Wert tatsächlich ist Bindestriche. Die gewählte hyphen character, ie \u00ad ist gerade nicht sichtbar. Dumping jedes Zeichen in der Zeichenfolge zeigt die weichen Bindestriche einen ASCII-Wert von 173 haben:

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

So eine einfache Lösung wäre, das Zeichen mit einem Standard-Bindestrich ersetzt werden:

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

Randnotiz, Laufen das gleiche Beispiel direkt in Java ergab auch "as-so-ciate", nicht "as-so-ci-ate".