erlang格式化生成(utf8)字符串。

erlang服务端做多语言推送时往往会遇到这种情况。比如提示“您获得了XX个金币", XX是个变量,如果把这句话拆分成两句话再拼接,实在优点傻,像这样:

%% encoding: utf-8
-define(TEXT1, "您获得了").
-define(TEXT2, "个金币").

...

Message = ?TEXT1 ++ "50" ++ ?TEXT2.

还有一种稍微不傻的解决方法是吧XX都用某个特殊字符组代替,写一个替换函数每次替换。


今天写了了一个更优雅的解决方式:

%% encoding: utf-8

-define(TEXT1, "您获得了~p个金币").

-define(TEXT2, "您获得了~s个金币").

Message1 = lists:flatten(io_lib:format(?TEXT1, [50])),

Message2 = lists:flatten(io_lib:format(?TEXT2, ["50"])),

io:format("~ts~n~ts~n", [Message1, Message2]).

Output:

您获得了50个金币

您获得了50个金币


> io_lib:format("Get ~s coins", ["50"]).

> [71,101,116,32,"50",32,99,111,105,110,115]

>  io:format("~w", ["50"

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值