HarmonyOS 字符串格式化异常
通过以下api格式化获取字符串,运行crash。报错code提示资源id不存在,实际上是存在的。是啥问题?
let ua = getContext().resourceManager.getStringSync($r('app.string.web_ua_2').id, 'stg', 'stg', 'stg', 'stg')
string.json中的资源为:
{
"name": "web_ua_2",
"value": "%1$s 111 222 %2$s 333 %3$s 444 %4$s"
}
error内容:
Error message:Resource id invalid
Error code:9001001
SourceCode:
let ua = getContext()
.resourceManager
.getStringSync({
"id": 67108978,
"type": 10003,
params: [],
"bundleName": "com.pingan.eclaim.test",
"moduleName": "lib_web"
}.id, 'stg', 'stg', 'stg', 'stg');
HarmonyOS
赞
收藏 0
回答 1
待解决
相关问题
HarmonyOS 字符串格式化
213浏览 • 1回复 待解决
HarmonyOS getStringSync无法格式化字符串
207浏览 • 1回复 待解决
如何格式化字符串,有人知道吗?
628浏览 • 1回复 待解决
获取格式化日期,将传入的日期格式化为指定格式的字符串
688浏览 • 1回复 待解决
HarmonyOS 字符串显示异常
613浏览 • 1回复 待解决
HarmonyOS 加密字符串格式转换
198浏览 • 1回复 待解决
HarmonyOS 字符串长度判定异常
86浏览 • 1回复 待解决
HarmonyOS shortcuts配置字符串获取异常
27浏览 • 1回复 待解决
HarmonyOS 如何支持html格式字符串?
276浏览 • 1回复 待解决
HarmonyOS TextInput组件如何在输入框显示字符串之前匹配字符串格式(金额格式输入)
497浏览 • 1回复 待解决
HarmonyOS DateFormat格式化
742浏览 • 1回复 待解决
HarmonyOS 时间格式化
188浏览 • 1回复 待解决
格式化console输出日志格式-美观化
542浏览 • 1回复 待解决
HarmonyOS 时间戳格式化
187浏览 • 1回复 待解决
HarmonyOS 时间格式化问题
263浏览 • 1回复 待解决
检查字符串是否以给定的字符串开头
708浏览 • 1回复 待解决
HarmonyOS Uint8Array格式转字符串的方法
1008浏览 • 1回复 待解决
字符串反射
170浏览 • 1回复 待解决
HarmonyOS 替换字符串
219浏览 • 1回复 待解决
HarmonyOS 时间日期格式化
960浏览 • 1回复 待解决
HarmonyOS字符串替换问题
1069浏览 • 1回复 待解决
检查字符串是否以给定的字符串结尾
551浏览 • 1回复 待解决
获取格式化日期,将传入的日期格式化为Date
705浏览 • 1回复 待解决
HarmonyOS 如何通过纯字符串获取Hap内的字符串资源
244浏览 • 1回复 待解决
ArkUI组件的字符串中如何实现字符串变量拼接
2726浏览 • 1回复 待解决
1、如果是在HAP包中使用resourceManager,请确认当前ability是哪种类型的ability,如果是UIExtensionAbility的话,需要申请ohos.permission.ACCESS_BUNDLE_DIR权限,因为UIExtensionAbility的context在使用resourceManager时有限制,没有UIAbility的权限大。
2、如果是在HSP包中使用resourceManager,需要使用HSP上下文的resourceManager来获取相关目录下的资源文件。
请先按照这个排查一下:
9001007 根据当前id获取的资源格式化失败。
错误信息:
If the resource obtained by resId formatting error.
错误描述:
resId获取的字符串资源格式化失败。
可能原因
1、参数类型不在支持范围内。
2、参数与占位符个数不等。
3、参数与占位符类型不匹配。
处理步骤:
查看args参数类型与占位符的个数、类型是否一致。
$符号去掉。
如果是单个占位符,沿用之前的写法%1d可以识别,如果是有多个占位符的,要去掉1, HarmonyOS 只识别%d, %f, %s这些。
格式化字符串资源参数不正确。参考链接:
https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-localization-kit/js-apis-resource-manager.md#getstringsync10
如果是单个占位符,沿用之前的写法%1d可以识别,如果是有多个占位符的,要去掉1, HarmonyOS 只识别%d, %f, %s这些。
例:
这里只有一个占位符的可以用 %s %d 或者 %1$s,但是对于有多个占位符的只能用 %s %d,例如
'%d.关于%s的几点意见,详见%s'。