当前位置: 首页 > news >正文

【HarmonyOS NEXT】应用引用media中的字符串资源如何拼接字符串

在 HarmonyOS NEXT 中,$r引用返回的是Resource类型对象,而非直接的字符串,因此不能通过简单的+运算符进行拼接。通常有三种主流方案,你可以根据使用场景选择:

🧩 方案一:使用占位符(最推荐,适用于带变量的国际化文案)

这是实现字符串资源拼接最规范的方式,特别适合价格是XX元这类带有动态内容的文本,并且完美支持多语言。

1. 在资源文件 (string.json) 中定义带占位符的模板

json

{ "string": [ { "name": "price_tip", "value": "价格是%d个, 你好%d位, 哈哈哈哈%s" // %d代表数字,%s代表字符串 } ] }

2. 在代码中通过$r的第二个参数传入值进行替换
占位符会按照你传入参数的顺序依次填充。

ts

Text($r("app.string.price_tip", 10, 99, "test")) // 最终显示效果为:价格是10个, 你好99位, 哈哈哈哈test

🔗 方案二:使用Span组件(适用于在 Text 中组合多个资源)

如果你想在一个Text组件内显示多个不同的字符串资源,可以直接使用Span子组件,这是最优雅的 UI 写法。

ts

Text() { Span($r('app.string.app_name')) Span($r('app.string.module_desc')) }

⚙️ 方案三:通过ResourceManager获取字符串再拼接(适用于逻辑代码中)

如果你需要在@Entry组件的业务逻辑中拼接字符串,可以借助ResourceManagerResource对象转为实际的string

ts

import common from '@ohos.app.ability.common'; // 1. 获取上下文 let context = getContext(this) as common.UIAbilityContext; // 2. 定义一个转换方法 rs2str(resource: Resource): string { return context.resourceManager.getStringSync(resource.id); } // 3. 在需要的地方拼接 let combinedStr = this.rs2str($r('app.string.xxx')) + this.rs2str($r('app.string.yyy'));

⚠️ 特别提醒
部分开发者尝试直接使用$r('app.string.xxx').value获取字符串,虽然这在某些预览版可行,但存在风险,value属性可能返回undefined。为了代码的健壮性和 API 稳定性,强烈建议使用上述方案一或方案三进行规范化处理。

http://www.jsqmd.com/news/1191642/

相关文章:

  • 2026年6月AI短剧进入落地深水区!普通人机会更清晰了
  • 影刀RPA 循环操作完全指南:遍历循环、次数循环、条件循环
  • 查理AI助手开发指南:从会话管理到技能集成的完整实践
  • GPU缓存优化实战:从内存墙到性能飞跃的C++/CUDA系统级实践
  • CTS实战精要:从SDC约束到高质量时钟树构建
  • PPL.NN推理引擎入门:从零构建C++ AI模型部署实战指南
  • 星阵围棋AI精解:从算法原理到实战学习的完整指南
  • 品牌站要颜值还是要成交?主流建站方案优缺点一次讲透,全程零代码,BBWEYY:AI+SAAS+GEO模式
  • 2026年 上海垃圾压缩机/垃圾压缩设备/预压缩垃圾压缩机/垃圾压缩搜集装置/压缩式垃圾收集装置推荐榜:技术领先与智能环保口碑之选 - 甄选服务推荐
  • 遗传算法工程化实践:从早熟收敛到工业级可控优化
  • 智能音箱技术选型指南:从硬件架构到生态集成的深度解析
  • 【蓝牙精品系列文档】【03_blemesh架构】06_Friendship流程与空口交互
  • 2025年程序员核心能力:从写代码到系统架构思维
  • 二维滑动窗口与单调队列:从P2216理想正方形看矩阵最值优化
  • 嵌入式通信外设寄存器级开发:I2C、UART、USB实战解析
  • (2026最新)梅州防水补漏本地人必选的正规靠谱公司推荐-房屋漏水检测维修师傅上门-卫生间/厨房/阳台/房顶/外墙漏水检测精准测漏 - 即刻修防水
  • 2026年7月最新西安卡地亚官方售后服务网点地址及客服电话一览 - 卡地亚服务中心
  • LangGraph核心四原语:节点、边、状态、图深度解析
  • 从零到一:Canal高可用集群部署与生产环境配置实战
  • GPT-5.6、Grok 4.5、Fable 5、Spark 1.1四款AI大模型技术选型实战指南
  • 告别VNC延迟:MacBook Pro通过SSH X11转发高效运行Linux GUI应用实战
  • 2026年获取有实力的四川旅游公司联系方式电话实用攻略 - 热点品牌推荐
  • 模板类:面试官问我vector底层怎么做到支持任意类型的,我这样答
  • C#实现U盘加密与密码修改:基于Dokany与LibTomCrypt的完整解决方案
  • 【HarmonyOS NEXT】not supported when useNormalizedOHMUrl is not true.
  • 强化学习算法创新:从DQN到Transformer RL的决策智能演进
  • iOS 26.4.2深度解析:静默更新背后的功耗调度与热管理优化
  • 2026年7月最新石家庄江诗丹顿官方售后客服中心地址电话及服务网点分布 - 江诗丹顿服务中心
  • 2026年7月最新宝玑大连太古里维修保养服务电话 - 亨得利钟表维修中心
  • 基于MSP430F67641A的三相智能电表设计:从硬件采样到软件校准全解析