HarmonyOS 鸿蒙Next中Resource跟string怎么拼接成string输出
HarmonyOS 鸿蒙Next中Resource跟string怎么拼接成string输出
Text(${$r('app.string.petRanking')} ${this.sortNum}
) 为啥无法实现拼接成string输出, ${$r(‘app.string.petRanking’)}的输出结果为object对象。调用 await getContext(this).resourceManager.getStringValue($r(‘app.string.petRanking’)) 实现的话,不是很麻烦嘛?有点脱裤子放屁的感觉!
// 方法1:使用模板字符串
Text(`${this.message} ${$r('app.string.world')}`).fontSize(16)
// 方法2:使用+运算符
Text(this.message + ' ' + $r('app.string.world')).fontSize(16)
// 方法3:使用concat方法
Text(this.message.concat(' ').concat($r('app.string.world'))).fontSize(16)
更多关于HarmonyOS 鸿蒙Next中Resource跟string怎么拼接成string输出的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在引用的外层加一个括号再拼接就可以了,楼主可以试试这种方式来实现你的需求
Text(($r('app.string.petRanking'))+ this.sortNum)
组件中直接拼接:
Text($r('app.string.petRanking', this.sortNum))
嗯,有解决办法了,在string配置,调用时
$r('app.string.petRanking', this.sortNum),
{
"name": "petRanking",
"value": "Ranking %d"
}
感觉你需要的是给字符串传入一个数值,比如“排行榜xx名”,这种需要在plurals.json中去配置
// plurals.json
{
"plural": [
{
"name": "ranking",
"value":[
{
"quantity":"other",
"value":"排行榜第 %d 名 ",
"attr":{
"priority":"translate"
}
}
]
}
]
}
// xx.etx
// 使用字符串
Text($r('app.plural.ranking', 1, 1))
Text(){
Span($r(‘app.string.petRanking’))
Span(${this.sortNum}
)
}
在HarmonyOS鸿蒙Next中,使用ResourceManager和字符串拼接可以通过以下方式实现:
- 获取资源字符串:
let str1 = $r('app.string.hello');
- 直接拼接:
let result = `${str1} World`;
- 使用字符串模板:
let str2 = "World";
let result = `${$r('app.string.hello')} ${str2}`;
ResourceManager返回的是Resource对象,在字符串模板中会自动转换为字符串值。拼接后的result可以直接用于UI显示或日志输出。
在HarmonyOS Next中,$r
返回的是 Resource 类型而非直接字符串值,这是设计上的考虑。要实现字符串拼接,推荐以下两种简洁方式:
- 使用资源 ID 直接拼接:
Text($r('app.string.petRanking').id + ' ' + this.sortNum)
- 使用模板字符串时先获取字符串值:
const rankingText = await getContext(this).resourceManager.getString($r('app.string.petRanking').id);
Text(`${rankingText} ${this.sortNum}`)
这种设计主要是为了支持多语言等资源管理特性,虽然看似多了一步,但能保证资源管理的灵活性和正确性。