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’)) 实现的话,不是很麻烦嘛?有点脱裤子放屁的感觉!

9 回复

// 方法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


可以按照如下的方法进行拼接,ImageSpan示例

效果

cke_2198.png

在引用的外层加一个括号再拼接就可以了,楼主可以试试这种方式来实现你的需求

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和字符串拼接可以通过以下方式实现:

  1. 获取资源字符串:
let str1 = $r('app.string.hello');
  1. 直接拼接:
let result = `${str1} World`;
  1. 使用字符串模板:
let str2 = "World";
let result = `${$r('app.string.hello')} ${str2}`;

ResourceManager返回的是Resource对象,在字符串模板中会自动转换为字符串值。拼接后的result可以直接用于UI显示或日志输出。

在HarmonyOS Next中,$r 返回的是 Resource 类型而非直接字符串值,这是设计上的考虑。要实现字符串拼接,推荐以下两种简洁方式:

  1. 使用资源 ID 直接拼接:
Text($r('app.string.petRanking').id + ' ' + this.sortNum)
  1. 使用模板字符串时先获取字符串值:
const rankingText = await getContext(this).resourceManager.getString($r('app.string.petRanking').id);
Text(`${rankingText} ${this.sortNum}`)

这种设计主要是为了支持多语言等资源管理特性,虽然看似多了一步,但能保证资源管理的灵活性和正确性。

回到顶部