kettle通过java步骤获取汉字首拼

news2024/11/26 17:39:15

kettle通过java步骤获取汉字首拼

用途描述

一组数据,需要获取汉字首拼后,输出;

实现效果

在这里插入图片描述

添加jar包

pinyin4j-2.5.0.jar

自定义常量数据

在这里插入图片描述
在这里插入图片描述

Java代码

在这里插入图片描述

完整代码:

import net.sourceforge.pinyin4j.PinyinHelper;
import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;

String nameField;
String pyField;

public boolean processRow(StepMetaInterface smi, StepDataInterface sdi) throws KettleException
{
	
	// Let's look up parameters only once for performance reason.	
	// 	
	if (first) {	
		nameField = "name";//getParameter("name");	
		pyField = "py" ; // getParameter("py");	
		first=false;	
	}
	
	// First, get a row from the default input hop
	//
	Object[] r = getRow();
	
	// If the row object is null, we are done processing.
	//
	if (r == null) {
		setOutputDone();
		return false;	
	}
	
	// It is always safest to call createOutputRow() to ensure that your output row's Object[] is large
	// enough to handle any new fields you are creating in this step.
	//
	Object[] outputRow = createOutputRow(r, data.outputRowMeta.size());
	String name = get(Fields.In, nameField).getString(r);	
	
	// Set the value in the output field	
	//
	String py = toFirstChar(name);	
	get(Fields.Out, pyField).setValue(outputRow, py);	
	
	// putRow will send the row on to the default output hop.	
	//
	putRow(data.outputRowMeta, outputRow);
	
	return true;
}

/**
 * 获取字符串拼音的第一个字母
 */
public static String toFirstChar(String chinese){
	String pinyinStr = "";
	char[] newChar = chinese.toCharArray();  //转为单个字符
	HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
	defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
	defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
	for (int i = 0; i < newChar.length; i++) {
		if (newChar[i] > 128) {
			try {
				pinyinStr += PinyinHelper.toHanyuPinyinStringArray(newChar[i], defaultFormat)[0].charAt(0);
			} catch (BadHanyuPinyinOutputFormatCombination e) {
				e.printStackTrace();
			}
		}else{
			pinyinStr += newChar[i];
		}
	}
	return pinyinStr;
}

/**
 * 汉字转为拼音
 */
public static String toPinyin(String chinese){
	String pinyinStr = "";
	char[] newChar = chinese.toCharArray();
	HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
	defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
	defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
	for (int i = 0; i < newChar.length; i++) {
		if (newChar[i] > 128) {
			try {
				pinyinStr += PinyinHelper.toHanyuPinyinStringArray(newChar[i], defaultFormat)[0];
			} catch (BadHanyuPinyinOutputFormatCombination e) {
				e.printStackTrace();
			}
		}else{
			pinyinStr += newChar[i];
		}
	}
	return pinyinStr;
}

–END–

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/979985.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

高潮迭起:探寻Twitch上精彩纷呈的电子竞技赛事直播

Twitch是电子竞技赛事的热门直播平台之一,它为全球范围内的电子竞技比赛提供了广泛的覆盖和直播服务。以下是一些在Twitch上直播的电子竞技比赛和赛事的例子: League of Legends (英雄联盟) Twitch广泛直播英雄联盟的各个赛事,包括全球性的锦标赛如英雄联盟全球总决赛(World …

SLAM从入门到精通(基本框架)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 SLAM是机器人的一个分支。广义上来说&#xff0c;机器人还包括了计算机视觉、语音识别、自然语言处理、机械臂控制、运动控制、机器人导航、机器人…

软件架构师 设计和编码

软件架构师 设计和编码 目录概述需求&#xff1a; 设计思路实现思路分析1.设在设计软件架构时&#xff0c;您需要考虑以下方面&#xff1a;2.在编码方面&#xff0c;您需要具有以下技能&#xff1a; 参考资料和推荐阅读 Survive by day and develop by night. talk for import …

如何绘制英语思维导图?偷偷告诉你这个绘制方法

如何绘制英语思维导图&#xff1f;绘制英语思维导图可以帮助我们更好地理清思路&#xff0c;提高学习和工作效率。同时&#xff0c;英语思维导图还可以帮助我们提高英语表达能力和阅读理解能力&#xff0c;让我们更好地掌握英语学习和应用。因此&#xff0c;绘制英语思维导图是…

msvcr120.dll放在哪里?怎么修复msvcr120.dll文件

当您在运行某些应用程序或游戏时遇到“msvcr120.dll缺失”错误时&#xff0c;这可能会影响您的使用体验。msvcr120.dll是Microsoft Visual C Redistributable的一部分&#xff0c;并且它提供了程序运行所需的运行时支持&#xff0c;今天我们来讨论一下msvcr120.dl文件缺失了要怎…

[SSM]MyBatisPlus高级

四、高级篇 4.1主键策略 主键的作用就是唯一标识&#xff0c;我们可以通过这个唯一标识来定位到这条数据。对于表数据中的主键&#xff0c;我们可以自己设计生成规则&#xff0c;生成主键。但是在更多的场景中&#xff0c;没有特殊要求的话&#xff0c;我们每次自己手动生成的…

第 2 章 线性表(线性表的动态分配顺序存储结构实现)

1. 背景说明 线性表(linear Iist)是最常用且最简单的一种数据结构。简言之&#xff0c;一个线性表是 n 个数据元素的有限序列。 至于每个数据元素的具体含义&#xff0c;在不同的情况下各不相同&#xff0c;它可以是一个数或一个符号&#xff0c;也可以是一页书&#xff0c;甚…

千粉福利——— ubuntu安装

&#xff08;一&#xff09;配置虚拟机&#xff0c;首先打开虚拟机 点击创建新的虚拟机或者左上角文件->新建虚拟机&#xff0c;或者使用快捷键CtrlN,选择自定义安装 选择虚拟机就硬件兼容性&#xff0c;默认点击下一步就好 安装客户机操作系统&#xff1a;选择稍后安装操作…

tensorflow QAT

tensorflow qat https://www.wpgdadatong.com/tw/blog/detail/70672 在边缘运算的重点技术之中&#xff0c;除了简化复杂的模块构架&#xff0c;来简化参数量以提高运算速度的这项模块轻量化网络构架技术之外。另一项技术就是各家神经网络框架&#xff08;TensorFlow、Pytorc…

Day7:浅谈useEffect

「目标」: 持续输出&#xff01;每日分享关于web前端常见知识、面试题、性能优化、新技术等方面的内容。 Day7-今日话题 useEffect 是 React 中一个非常重要的 Hook&#xff0c;用于处理副作用和订阅外部数据源的变化。它可以在函数式组件中执行各种操作&#xff0c;例如数据获…

小程序如何上传微信聊天记录的文件

wx.chooseMessageFile({count: 10,type: image,success (res) {// tempFilePath可以作为img标签的src属性显示图片const tempFilePaths res.tempFiles} })参数说明 回调函数说明

数据库实现学生管理系统

1.QT将数据库分为三个层次&#xff1a; 1> 数据库驱动层&#xff1a;QSqlDriver、QSqlDriverCreator、QSqlDriverCreatorBase、QSqlDriverPlugin 2> sql接口层&#xff1a;QSqlDatabase、QSqlQuery、QSqlRecord、QSqlError 3> 用户接口层&#xff1a;提供一些模型QSql…

开眼“观天”,从墨迹天气服贸会之旅看气象服务新未来

今年夏天&#xff0c;天气焦人。先是高温早早上线&#xff0c;然后台风来势汹汹&#xff0c;北京高温、河北暴雨&#xff0c;杜苏芮、苏拉、海葵轮番“奔袭”&#xff0c;极端气象事件频繁登上热搜&#xff0c;其险象环生的过程&#xff0c;让大众对气候问题的关注度节节走高。…

架构师 软件测试

架构师 软件测试 目录概述需求&#xff1a; 设计思路实现思路分析1.软件测试方法 软件测试工具 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show your perfect code,full busy&#xff0c;skip hardness,make a better result,wait for c…

cudnn-windows-x86_64-8.6.0.163_cuda11-archive 下载

网址不太好访问的话,请从下面我提供的分享下载 Download cuDNN v8.6.0 (October 3rd, 2022), for CUDA 11.x 此资源适配 cuda11.x 将bin和include文件夹里的文件&#xff0c;分别复制到C盘安装CUDA目录的对应文件夹里 安装cuda时自动设置了 CUDA_PATH_V11_8 及path C:\Progra…

1123. 最深叶节点的最近公共祖先

文章目录 Tag题目来源题目解读解题思路方法一&#xff1a;递归 写在最后 Tag 【递归】【最近公共祖先】【二叉树】 题目来源 1123. 最深叶节点的最近公共祖先&#xff0c;865. 具有所有最深节点的最小子树 此二题系重复的题目。 题目解读 题目意思很明确&#xff0c;找出二叉…

String类的常用方法(Java)

目录 一、字符串构造二、String对象的比较1、比较是否引用同一个对象2、boolean equals(Object anObject) 方法&#xff1a;按照字典序比较3、int compareTo(String s) 方法: 按照字典序进行比较4、int compareToIgnoreCase(String str) 方法&#xff1a;与compareTo方式相同&a…

SpringMVC相对路径和绝对路径

1.相对地址与绝对地址定义 在jsp&#xff0c;html中使用的地址&#xff0c;都是在前端页面中的地址&#xff0c;都是相对地址 地址分类&#xff1a;&#xff08;1&#xff09;&#xff0c;绝对地址&#xff0c;带有协议名称的是绝对地址&#xff0c;http://www.baidu.com&…

c语言练习41:深入理解字符串函数strlen strcpy strcat

深入理解字符串函数strlen strcpy strcat 模拟实现&#xff1a;”strlen strcpy strcat strlen strcat: #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<assert.h> strlen 1.通过指针移动模拟 //int my_strlen(char* str) { // size_t c…

Unity之创建第一个游戏

一 Unity环境配置 1.1 Untity资源官网下载&#xff1a;https://unity.cn/releases 1.2 Unity Hub集成环境&#xff0c;包含工具和项目的管理 1.3 Unity Editor编辑器 1.4 Visual Studio 2022脚本编辑器 1.5 AndroidSKD&#xff0c;JDK&#xff0c;NDK工具&#xff0c;用于and…