免责声明:我对榆树来说是全新的
我正在摆弄在线Elm编辑器,我遇到了一个问题.我找不到让某些特殊字符(版权,商标等)出现的方法.我试过了:
import Html exposing (text)
main =
text "©"
Run Code Online (Sandbox Code Playgroud)
所有出现的都是实际文本©.我也尝试使用unicode字符,\u00A9但最终给了我一个语法错误:
(line 1, column 16): unexpected "u" expecting space, "&" or escape code
Run Code Online (Sandbox Code Playgroud)
我发现的唯一方法是实际访问某人的网站并将其版权符号复制/粘贴到我的应用中:
import Html exposing (text)
main =
text "©"
Run Code Online (Sandbox Code Playgroud)
这是有效的,但我宁愿能够快速输入这些字符,而不必寻找其他网站上的实际符号.在Elm中返回HTML时是否有首选/推荐的获取非转义文本的方法?
编辑:
专门针对Mac:
©™®所有测试都在在线编辑器中进行测试.这仍然不会攻击核心问题,但对于这些特定的特殊字符来说,这只是一件好事.
Car*_*icz 18
为什么这(故意)不那么容易
榆树的"制造者"可以理解地不愿意给我们一种在HTML文本中插入"特殊"字符的方法.两个主要原因:
反正怎么可能
也就是说,Elm用户社区发现了一个提供解决方法的漏洞.由于上述原因,不建议使用,特别是如果您的文本不是常量,即来自程序之外的来源.尽管如此,人们仍然希望这样做,所以我要记录它以拯救其他人我在挖掘所有东西并让它工作的麻烦:
import Json.Encode exposing (string)elm-lang/core因此它应该已经存在于您的依赖项中.import Html.Attributes exposing (property)property "innerHTML"文本的JSON-Value表示的标记,例如:span [ property "innerHTML" (string " ") ] []小智 10
我发现,有一个更好的解决方案:你可以将特殊字符从Unicode转换为char,然后从char创建一个字符串:
resString = String.fromChar (Char.fromCode 187)
Run Code Online (Sandbox Code Playgroud)
您可以直接在Elm字符串和字符中使用unicode转义码:
我们有一个包含所有特殊字符的util模块,如:
module Utils.SpecialChars exposing (noBreakSpace)
noBreakSpace : Char
noBreakSpace = '\x00A0'
Run Code Online (Sandbox Code Playgroud)
哪个可以用作:
let
emptyLabel = String.fromChar noBreakSpace
in
label []
[ span [ ] [ text emptyLabel ]
]
Run Code Online (Sandbox Code Playgroud)
这将呈现一个 <span> </span>