跳到主要内容

如何姓名转拼音

场景描述

解决客户中英文姓名转换需求,同样可以作用在任意需要中文转拼音的需求中。

实现方式

代码块方式

通过代码块中引用pinyin库来对输入的字段做转换,再通过客户要求如: 每个字首字母大写,其他字符保持不变,每个中文转拼音后间隔开,将输入的内容按要求做转换。

Qlinker方式

通过调用接口来实现直接转为英文或拼音,例:调用https://www.tianapi.com/内接口直接转为英文

表单设计

代码块方式:

image.png

Qlinker方式:

image.png

代码块内容

注:7.0.0版本无需修改代码可以使用,专有云客户可能因为版本不同需要运维同事帮助安装pinyin库才能使用

代码块中仅需要替换输入变量中的字段即可实现转换需求,其中如果仅需要首个中文首字母大写则修改下面的对于规则。

// 引入 pinyin 库
const pinyin = require('pinyin').default;

// 输入变量
let name = qf_field.{name$$2ABA678DD$$};

// 用于存储转换后的拼音结果
let result = "";

// 将输入字符串按字符分割为数组,方便遍历处理
let chars = name.split('');

for (let char of chars) {
if (/[\u4e00-\u9fa5]/.test(char)) {
// 使用 pinyin 库转换为拼音数组
const options = {
style: pinyin.STYLE_NORMAL
};
const pinyinResult = pinyin(char, options);

// 获取拼音并将首字母大写,然后添加空格
let pinyinWithUpperFirst = pinyinResult[0][0].charAt(0).toUpperCase() + pinyinResult[0][0].slice(1);
result += " " + pinyinWithUpperFirst + " "; // 在拼音前后加空格
} else {
result += char; // 非中文字符直接拼接
}
}

// 去除多余空格
result = result.trim().replace(/\s{2,}/g, ' ');

// 使用 qf_output 对象按照要求格式输出
qf_output = {
output: result
};

运行测试

测试返回的内容为需求格式则为成功,解析后在字段中关联即可实现。

image.png

image.png image.png

Qlinker内容

配置内容

image.png image.png 根据接口文档仅需要添加一个需要翻译的字段,将key放在URL即可实现

测试解析

image.pngimage.png

实现效果

代码块

image.png

Qlinker

image.png