鸿蒙Next中string.json如何使用变量

在鸿蒙Next开发中,如何在string.json文件中使用变量?比如我想根据不同场景动态显示文本内容,但直接写${variable}似乎不生效。官方文档没有明确说明具体语法,是否需要配合其他配置文件或ArkTS代码实现?求正确用法示例和注意事项。

2 回复

鸿蒙Next的string.json里,变量用%s%d占位,运行时用ResourceManager.getString()动态替换。比如"hello": "你好,%s!",代码里填上名字,轻松实现个性化问候~

更多关于鸿蒙Next中string.json如何使用变量的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在鸿蒙Next(HarmonyOS NEXT)中,string.json 文件用于定义应用中的字符串资源,但本身不支持直接嵌入变量。如果需要动态显示内容,可以通过以下方法实现:

1. 使用资源引用占位符

string.json 中定义带占位符的字符串,运行时动态替换。

步骤:

  • string.json 中定义:

    {
      "string": [
        {
          "name": "welcome_message",
          "value": "Hello, %s! Welcome to %s."
        }
      ]
    }
    

    %s 表示字符串占位符(也支持 %d 整数等)。

  • 在代码中替换占位符:

    // 以ArkTS为例(HarmonyOS推荐语言)
    import { I18n } from '[@ohos](/user/ohos).i18n';
    
    let welcomeStr: string = $r('app.string.welcome_message'); // 获取资源
    let formattedStr = I18n.printf(welcomeStr, ["User", "MyApp"]); // 替换占位符
    console.log(formattedStr); // 输出:"Hello, User! Welcome to MyApp."
    

2. 拼接字符串

如果变量值无需多语言,可直接在代码中拼接:

let userName: string = "Alice";
let displayText: string = "Hello, " + userName + "!";

注意事项:

  • string.json 仅用于静态多语言资源,动态内容需通过编程处理。
  • 占位符顺序需与替换数组顺序一致。

通过以上方法,可灵活实现字符串与变量的结合使用。

回到顶部