JAVA Hyphenator с использованием Coldfusion

Я надеялся, что кто-нибудь поможет с реализацией TeXHyphenator-J с использованием CFML.

Я использую JavaLoader.cfc для создания объекта ColdFusion TeXHyphenator-J (как в приведенном ниже коде). При запуске кода я не получаю никаких ошибок, и возвращается строка. Однако это не через дефис?

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

person pelfed    schedule 18.01.2017    source источник


Ответы (1)


однако это не через дефис

Хотя это и не очевидно, возвращаемое значение на самом деле разделено через дефис. Выбранный символ дефиса, т.е. ­ просто не виден . Сброс каждого символа в строке показывает, что мягкие дефисы имеют значение ascii 173:

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 также дал «как-со-циировать», не «как-так-ци-ат».

person Leigh    schedule 19.01.2017