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:9001001SourceCode:
  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 字符串格式化 
1800浏览  • 1回复 待解决
HarmonyOS getStringSync无法格式化字符串 
1101浏览  • 1回复 待解决
如何格式化字符串,有人知道吗? 
1275浏览  • 1回复 待解决
获取格式化日期,将传入的日期格式化为指定格式的字符串 
1809浏览  • 1回复 待解决
HarmonyOS 字符串显示异常 
1455浏览  • 1回复 待解决
HarmonyOS 加密字符串格式转换 
1154浏览  • 1回复 待解决
HarmonyOS 字符串长度判定异常 
760浏览  • 1回复 待解决
HarmonyOS  shortcuts配置字符串获取异常 
662浏览  • 1回复 待解决
HarmonyOS 如何支持html格式字符串? 
960浏览  • 1回复 待解决
HarmonyOS  DateFormat格式化 
1850浏览  • 1回复 待解决
HarmonyOS TextInput组件如何在输入框显示字符串之前匹配字符串格式(金额格式输入) 
1320浏览  • 1回复 待解决
HarmonyOS 时间格式化 
1352浏览  • 1回复 待解决
格式化console输出日志格式-美观化 
1512浏览  • 1回复 待解决
HarmonyOS  时间格式化问题 
1163浏览  • 1回复 待解决
HarmonyOS 时间戳格式化 
1774浏览  • 1回复 待解决
HarmonyOS 时间日期格式化 
2085浏览  • 1回复 待解决
获取格式化日期,将传入的日期格式化为Date 
1717浏览  • 1回复 待解决
HarmonyOS 如何获取格式化的时间? 
1209浏览  • 1回复 待解决
HarmonyOS  Uint8Array格式转字符串的方法 
1925浏览  • 1回复 待解决
检查字符串是否以给定的字符串开头 
1921浏览  • 1回复 待解决
Dev EcoStudio如何格式化代码 
5276浏览  • 1回复 已解决
HarmonyOS如何实现日期格式化转换 
2241浏览  • 1回复 待解决
有时进行代码格式化后,本来自己不向换行的代码,被格式化后换行了,如何实现部分代码可以不格式化呢? 
1670浏览  • 1回复 待解决
HarmonyOS 如何将时间戳格式化 
1379浏览  • 1回复 待解决
HarmonyOS 如何将时间进行格式化? 
1533浏览  • 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'。