HarmonyOS鸿蒙Next中如何正则匹配非基本多语言平面字符?如:表情

HarmonyOS鸿蒙Next中如何正则匹配非基本多语言平面字符?如:表情 ArkTS 正则对于 pattern 为非基本多语言平面(Basic Multilingual Plane, BMP)的字符且不带 /u 参数时无法匹配,若需要匹配非 BMP 字符,需带上 /u 参数。

let reg=/😃/;
let str="😃";
let replacestr=str.replace(reg,"b");
console.info(replacestr)

ArkTS 对于该正则无法匹配 😃,因此不会替换。
若需要匹配 😃,推荐写法:

let reg=/😃/u;
let str="😃";
let replacestr=str.replace(reg,"b");
console.info(replacestr)

更多关于HarmonyOS鸿蒙Next中如何正则匹配非基本多语言平面字符?如:表情的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

你好,目前api13支持问题中的两种写法,可以尝试升级一下IDE版本验证一下

更多关于HarmonyOS鸿蒙Next中如何正则匹配非基本多语言平面字符?如:表情的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,正则表达式匹配非基本多语言平面(Non-BMP)字符,如表情符号,可以使用Unicode编码范围进行匹配。非BMP字符的Unicode编码范围是U+10000到U+10FFFF。以下是一个示例正则表达式:

[\uD800-\uDBFF][\uDC00-\uDFFF]

这个正则表达式匹配代理对(surrogate pairs),用于表示非BMP字符。在JavaScript或支持Unicode的正则表达式引擎中,可以直接使用:

/[\u{10000}-\u{10FFFF}]/u

在鸿蒙Next中,可以使用类似的正则表达式来匹配非BMP字符。确保正则表达式引擎支持Unicode标志u

在HarmonyOS鸿蒙Next中,使用正则表达式匹配非基本多语言平面字符(如表情符号),可以使用\p{So}\p{Emoji}

示例代码如下:

import java.util.regex.*;

public class Main {
    public static void main(String[] args) {
        String text = "Hello 😊 World 🌍";
        Pattern pattern = Pattern.compile("\\p{So}");
        Matcher matcher = pattern.matcher(text);
        while (matcher.find()) {
            System.out.println("Matched: " + matcher.group());
        }
    }
}

此代码将匹配并输出非基本多语言平面字符,如表情符号。

回到顶部