簡體   English   中英

將XSLT函數(字符串到代碼點)轉換為Java

[英]Convert XSLT function (string-to-codepoints) to 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

對於單個char您可以將其轉換為int以獲取十進制值:

System.out.println((int)ch);

對於String有一個.toCharArray()可以將其轉換為char[]但是如果該字符串涉及BMP之外的Unicode字符(即U + FFFF以上),則該字符串與“代碼點序列”並不完全相同。在Java中表示為兩個char值的代理對。 為了正確處理代理人,您將需要使用此答案中描述的技術。

要回答您提出的特定問題,您可以

number(string-to-codepoints(upper-case($char)) - string-to-codepoints('A'))+10

在Java中

char ch = // wherever you get $char from
int num = Character.toUpperCase(ch) - 'A' + 10;

由於char是Java中的整數類型,因此您可以像其他任何數字一樣添加或減去char值。

但是,只有當初始字母ch是ASCII字母時,這才可能給您一個明智的答案。

將值打印為Unicode轉義序列; XSLT打印十進制值。

這應該工作得更好:

System.out.println("a".codePointAt(0));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM