【问题标题】:JAVA Hyphenator using Coldfusion使用 Coldfusion 的 JAVA 连字符
【发布时间】:2017-01-18 04:43:46
【问题描述】:

我希望有人可以帮助使用 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#">

【问题讨论】:

    标签: java coldfusion hyphenation javaloader


    【解决方案1】:

    但它没有连字符

    虽然不是很明显,但返回的值实际上是 连字符的。选择的hyphen character, ie \u00ad 只是不可见。转储字符串中的每个字符显示软连字符的 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 中运行相同的示例也会产生“as-so-ciate”,not“as-so-ci-ate”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-08
      相关资源
      最近更新 更多