HarmonyOS 鸿蒙Next 有个文本截取和正则的问题
HarmonyOS 鸿蒙Next 有个文本截取和正则的问题
如果文本是 我推荐一些表情, [NO][OK][爱情][飞吻][跳跳][发抖][怄火][转圈], 这些表情很不错 使用你的demo的代码如下
let regExp = /([[\u4e00-\u9fa5]+])/g let result = this.imMessageInfo.text.split(regExp);
结果 [NO][OK], 是result的第一个元素, 期望result的第一个元素是[NO], 第二个元素是[OK], 第三个元素是[爱情], 依次类推, 请问怎么修改正则表达式,可以实现预期效果?
更多关于HarmonyOS 鸿蒙Next 有个文本截取和正则的问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
interface textObj {
type: string,
content: string | undefined
}
@Entry
@Component
struct TextExample {
@State text: string = '我推荐一些表情, [NO]、[OK]、[爱情]、[跳跳], 这些表情很不错';
@State textArr: textObj[] = [];
//文本和图片映射表
imageMap = new Map([
["[NO]", 'app.media.startIcon'],
["[OK]", 'app.media.startIcon'],
["[爱情]", 'app.media.startIcon'],
["[跳跳]", 'app.media.startIcon']
])
aboutToAppear() {
this.regText()
}
//解析文本
regText() {
//将文本根据[文字]进行分割成数组
let reg = /(\[[\u4e00-\u9fa5_a-zA-Z0-9]+\])/g //这个是匹配任意字符的正则,包含中文,英文字母和数字及 _
let result = this.text.split(reg);
this.textArr = [];
console.log(JSON.stringify(result))
//遍历数组
result.forEach(item => {
if (item) {
//设置类型,放入数组
let isImage = item.match(reg)
this.textArr.push({
type: isImage ? 'image' : 'text',
content: isImage ? this.imageMap.get(item) : item
})
}
})
console.log(JSON.stringify(this.textArr))
}
build() {
Row() {
Column() {
Text(undefined) {
ForEach(this.textArr,(spanItem:textObj)=>{
//根据不同类型显示ImageSpan或Span
if(spanItem.type==='image'){
ImageSpan($r(spanItem.content)).width(20).height(20)
}
if(spanItem.type==='text'){
Span(spanItem.content)
}
})
}
.fontSize(20)
.copyOption(CopyOptions.InApp)
.textAlign(TextAlign.Start)
.borderWidth(1)
.padding(10)
.width('100%')
}
.width('100%')
}
.height('100%')
}
}
更多关于HarmonyOS 鸿蒙Next 有个文本截取和正则的问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next中处理文本截取和正则表达式的任务,可以利用鸿蒙系统提供的原生API来完成。
对于文本截取,鸿蒙提供了字符串处理函数,比如StrSubStr
,它可以直接用于从源字符串中截取子字符串。你需要指定源字符串、起始位置和截取长度。
对于正则表达式,鸿蒙系统支持POSIX风格的正则表达式处理。你可以使用regex.h
头文件中的函数,比如regcomp
来编译正则表达式,regexec
来执行匹配,以及regfree
来释放编译后的正则表达式对象。
例如,要截取一个字符串中的数字部分,你可以使用正则表达式[0-9]+
。编译这个正则表达式后,对目标字符串执行匹配,匹配成功后可以通过regmatch_t
结构体获取匹配的位置,然后结合字符串截取函数得到所需的子字符串。
请注意,鸿蒙系统的API可能会随着版本更新而有所变化,建议查阅最新的鸿蒙开发者文档以获取最准确的信息。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html