【HarmonyOS NEXT】应用引用media中的字符串资源如何拼接字符串 在 HarmonyOS NEXT 中$r引用返回的是Resource类型对象而非直接的字符串因此不能通过简单的运算符进行拼接。通常有三种主流方案你可以根据使用场景选择 方案一使用占位符最推荐适用于带变量的国际化文案这是实现字符串资源拼接最规范的方式特别适合价格是XX元这类带有动态内容的文本并且完美支持多语言。1. 在资源文件 (string.json) 中定义带占位符的模板json{ string: [ { name: price_tip, value: 价格是%d个, 你好%d位, 哈哈哈哈%s // %d代表数字%s代表字符串 } ] }2. 在代码中通过$r的第二个参数传入值进行替换占位符会按照你传入参数的顺序依次填充。tsText($r(app.string.price_tip, 10, 99, test)) // 最终显示效果为价格是10个, 你好99位, 哈哈哈哈test 方案二使用Span组件适用于在 Text 中组合多个资源如果你想在一个Text组件内显示多个不同的字符串资源可以直接使用Span子组件这是最优雅的 UI 写法。tsText() { Span($r(app.string.app_name)) Span($r(app.string.module_desc)) }⚙️ 方案三通过ResourceManager获取字符串再拼接适用于逻辑代码中如果你需要在Entry组件的业务逻辑中拼接字符串可以借助ResourceManager将Resource对象转为实际的string。tsimport 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 稳定性强烈建议使用上述方案一或方案三进行规范化处理。