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

这篇具有很好参考价值的文章主要介绍了kettle通过java步骤获取汉字首拼。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

用途描述

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

实现效果

kettle通过java步骤获取汉字首拼,etl,java,java,开发语言,kettle,汉字首拼

添加jar包

pinyin4j-2.5.0.jar

自定义常量数据

kettle通过java步骤获取汉字首拼,etl,java,java,开发语言,kettle,汉字首拼
kettle通过java步骤获取汉字首拼,etl,java,java,开发语言,kettle,汉字首拼

Java代码

kettle通过java步骤获取汉字首拼,etl,java,java,开发语言,kettle,汉字首拼

完整代码:

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){
    // 特殊字符处理
    if (null == chinese || chinese.isEmpty()) return "";
    chinese=chinese.replace(" ","");

    StringBuilder pinyinStr = new StringBuilder();
    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 {
                String [] arr = PinyinHelper.toHanyuPinyinStringArray(newChar[i], defaultFormat);
                if(null == arr || arr.length<1) continue;
                pinyinStr.append(arr[0].charAt(0));
            } catch (BadHanyuPinyinOutputFormatCombination e) {
                e.printStackTrace();
            }
        }else{
            pinyinStr.append(newChar[i]);
        }
    }
    return pinyinStr.toString();
}
/**
 * 汉字转为拼音
 */
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–文章来源地址https://www.toymoban.com/news/detail-696565.html

到了这里,关于kettle通过java步骤获取汉字首拼的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 大数据 ETL 处理工具之 Kettle

    目录 第1章 Kettle概述 1.1 ETL简介 1.2 Kettle简介 1.2.1 Kettle是什么 1.2.2 Kettle的两种设计 1.2.3 Kettle的核心组件 1.2.4 Kettle特点 第2章 Kettle安装部署 2.1 Kettle下载 2.1.1 下载地址 2.1.2  Kettle目录说明 2.1.3  Kettle文件说明 2.2 Kettle安装部署 2.2.1 概述 2.2.2 安装 2.3 Kettle界面简介 2.3.1 首页 2.

    2024年02月11日
    浏览(44)
  • Springboot整合ETL引擎Kettle的使用

    ETL 是英文Extract-Transform-Load的缩写,用来描述将数据从源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程,它能够对各种分布的、异构的源数据(如关系数据)进行抽取,按照预先设计的规则将不完整数据、重复数据以及错误数据等“脏\\\"数据内容进行清洗,得到符合

    2024年02月14日
    浏览(46)
  • 你还在用Kettle吗?试试这款ETL工具

    当今时代,数字化转型已经成为企业发展的必由之路。数字化转型不仅可以提高企业的效率和生产力,还可以提高企业的竞争力和市场份额。在数字化转型的过程中,数据集成是至关重要的一步,可以帮助企业在数字化转型中实现更高效和可靠的数据服务。 在国内没有更好的

    2024年02月09日
    浏览(51)
  • 大数据ETL工具对比(Sqoop, DataX, Kettle)

    前言 在实习过程中,遇到了数据库迁移项目,对于数据仓库,大数据集成类应用,通常会采用 ETL 工具辅助完成,公司和客户使用的比较多的是 Sqoop , DataX 和 Kettle 这三种工具。简单的对这三种ETL工具进行一次梳理。 ETL工具,需要完成对源端数据的抽取(exat), 交互转换(

    2024年02月11日
    浏览(58)
  • kettle从入门到精通 第五十三课 ETL之kettle MQTT/RabbitMQ consumer实战

    1、上一节课我们学习了MQTT producer 生产者步骤,MQTT consumer消费者步骤。该步骤可以从支持MRQTT协议的中间件获取数据,该步骤和kafka consumer 一样可以处理实时数据交互,如下图所示:  2、双击步骤打开MQTT consumer 配置窗口,如下图所示: Step name: 自定义步骤名称。 Transformat

    2024年04月28日
    浏览(51)
  • java获取汉字的首字母

    java获取汉字的首字母的实现方式可能会有很多种,但是本文讲的是采用pinyin4j去获取,上代码 1、maven依赖 2、代码实现 3、结果测试

    2024年02月12日
    浏览(58)
  • Java中根据中文汉字获取首字母

    目录 1、引入依赖 2、代码实现 3、功能测试         在Java中想要实现根据中文汉字获取首字母的功能有两种途径,分别是使用第三方库Pinyin4j和Java自带的RuleBasedCollator类实现,这里大概讲述关于第三方库Pinyin4j的使用方式;         首先在项目中引入相关依赖:        

    2024年01月19日
    浏览(37)
  • 物联网开发终端管理篇-java从MQTT获取设备数据,并通过Druid连接池把数据写入MySQL数据库(Windows系统)

    下面来给大家做个简单的数据对接,也就是通过写JAVA代码实现MQTT协议 首页我们得搭建一个简单的IDEA项目,这个我就不做演示了 搭建完项目,我们需要准备一些jar包,jar包名如下: org.eclipse.paho.client.mqttv3-1.1.0.jar mysql-connector-java-5.1.34.jar jackson-databind-2.10.0.jar jackson-core-2.10.0

    2024年02月11日
    浏览(52)
  • ETL数据集成和数据仓库的关键步骤

    在当今数据驱动的世界中,ETL(提取、转换和加载)过程在构建可靠和高效的数据仓库中扮演着关键角色。ETL数据集成和数据仓库的关键步骤对于数据质量和决策支持至关重要。本文将介绍ETL数据集成和数据仓库构建的关键步骤,以帮助读者了解构建一个可靠数据仓库所需的

    2024年02月12日
    浏览(101)
  • Kettle 连接MySQL连接失败 详细解决步骤(实测)

    前言:先说一下我使用的环境和软件版本,不同的环境】版本即使相同的问题可能处理的解决方案也是不一样;网上教程太多,处理起来也很烦; 操作系统:windows10、MySQL:8.0.16  Kettle :8.2 问题描述:错误连接数据库      初步判断:驱动和需要的连接j jira包缺失; 处理方

    2023年04月08日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包