将XSLT函数(stringtocodepoints)转换为Java
如何将此XSLT代码“翻译”为Java
<xsl:value-of select="number(string-to-codepoints(upper-case($char)) - string-to-codepoints('A'))+10"/>
我只知道:“fn:string to codepoints函数返回表示Unicode代码点的xs:integer值序列。”
根据(http://www.xsltfunctions.com/xsl/fn_string-to-codepoints.html中给出的示例:
字符串到代码点('a')=97
我发现:
char ch = 'a';
System.out.println(String.format("\\u%04x", (int) ch));
但是我得到:\u0061
# 1 楼答案
对于单个
char
,您可以将其强制转换为int
以获得十进制值:对于
String
来说,有.toCharArray()
将其转换为char[]
,但如果字符串涉及BMP之外的Unicode字符(即U+FFFF之上),则这与“代码点序列”并不完全相同,后者在Java中表示为两个char
值的代理对。要正确处理代理,您需要使用类似the one described in this answer的技术要回答你提出的具体问题,你可以
在Java中作为
因为
char
在Java中是一个整数类型,您可以像任何其他数字一样添加或减去字符值但是,只有当
ch
的首字母是ASCII字母时,这才可能给你一个合理的答案# 2 楼答案
将值打印为unicode转义序列;XSLT打印一个十进制值
这应该会更好: