java获取中文全拼/首字母工具以及大小写转换

2023-10-30

pom:

<!--汉转拼音 -->
        <dependency>
            <groupId>com.belerweb</groupId>
            <artifactId>pinyin4j</artifactId>
            <version>2.5.0</version>
        </dependency>

 

 

代码:

 /**
     * 得到中文首字母
     * 
     * @param str
     * @return
     */
    public static String getPinYinHeadChar(String str) {

        String convert = "";
        for (int j = 0; j < str.length(); j++) {
            char word = str.charAt(j);
            String[] pinyinArray = PinyinHelper.toHanyuPinyinStringArray(word);
            if (pinyinArray != null) {
                convert += pinyinArray[0].charAt(0);
            } else {
                convert += word;
            }
        }
        return convert;
    }
    /**
     * 得到 全拼
     * 
     * @param src
     * @return
     */
    public static String getPingYin(String src) {
        char[] t1 = null;
        t1 = src.toCharArray();
        String[] t2 = new String[t1.length];
        HanyuPinyinOutputFormat t3 = new HanyuPinyinOutputFormat();
        t3.setCaseType(HanyuPinyinCaseType.LOWERCASE);
        t3.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
        t3.setVCharType(HanyuPinyinVCharType.WITH_V);
        String t4 = "";
        int t0 = t1.length;
        try {
            for (int i = 0; i < t0; i++) {
                // 判断是否为汉字字符
                if (java.lang.Character.toString(t1[i]).matches("[\\u4E00-\\u9FA5]+")) {
                    t2 = PinyinHelper.toHanyuPinyinStringArray(t1[i], t3);
                    t4 += t2[0];
                } else {
                    t4 += java.lang.Character.toString(t1[i]);
                }
            }
            return t4;
        } catch (BadHanyuPinyinOutputFormatCombination e1) {
            e1.printStackTrace();
        }
        return t4;
    }
    /**
     * 将字符串转移为ASCII码
     * 
     * @param cnStr
     * @return
     */
    public static String getCnASCII(String cnStr) {
        StringBuffer strBuf = new StringBuffer();
        byte[] bGBK = cnStr.getBytes();
        for (int i = 0; i < bGBK.length; i++) {
            // System.out.println(Integer.toHexString(bGBK[i]&0xff));
            strBuf.append(Integer.toHexString(bGBK[i] & 0xff));
        }
        return strBuf.toString();
    }
    public static void main(String[] args) {
        String str="骚客居(saokeju.com)";
        //得到拼音
        String pingyin=getPingYin(str);
        //过滤掉非字母字符并将拼音转换为大写
        System.out.println(pingyin.replaceAll("[^a-z^A-Z^]", "").toUpperCase());//SAOKEJUSAOKEJUCOM
        //得到首字母
        String pyhead=getPinYinHeadChar(str);
        System.out.println(pyhead);//skj(saokeju.com)
        
        
    }

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java获取中文全拼/首字母工具以及大小写转换 的相关文章

  • Java 中等效的并行扩展

    我在 Net 开发中使用并行扩展有一些经验 但我正在考虑在 Java 中做一些工作 这些工作将受益于易于使用的并行库 JVM 是否提供任何与并行扩展类似的工具 您应该熟悉java util concurrent http java sun
  • Grails 3.x bootRun 失败

    我正在尝试在 grails 3 1 11 中运行一个项目 但出现错误 失败 构建失败并出现异常 什么地方出了错 任务 bootRun 执行失败 进程 命令 C Program Files Java jdk1 8 0 111 bin java
  • Java new Date() 打印

    刚刚学习 Java 我知道这可能听起来很愚蠢 但我不得不问 System out print new Date 我知道参数中的任何内容都会转换为字符串 最终值是 new Date 返回对 Date 对象的引用 那么它是如何打印这个的呢 Mo
  • Spring Batch 多线程 - 如何使每个线程读取唯一的记录?

    这个问题在很多论坛上都被问过很多次了 但我没有看到适合我的答案 我正在尝试在我的 Spring Batch 实现中实现多线程步骤 有一个包含 100k 条记录的临时表 想要在 10 个线程中处理它 每个线程的提交间隔为 300 因此在任何时
  • 如何默认将 Maven 插件附加到阶段?

    我有一个 Maven 插件应该在编译阶段运行 所以在项目中consumes我的插件 我必须做这样的事情
  • Java中反射是如何实现的?

    Java 7 语言规范很早就指出 本规范没有详细描述反射 我只是想知道 反射在Java中是如何实现的 我不是问它是如何使用的 我知道可能没有我正在寻找的具体答案 但任何信息将不胜感激 我在 Stackoverflow 上发现了这个 关于 C
  • 在画布上绘图

    我正在编写一个 Android 应用程序 它可以在视图的 onDraw 事件上直接绘制到画布上 我正在绘制一些涉及单独绘制每个像素的东西 为此我使用类似的东西 for int x 0 x lt xMax x for int y 0 y lt
  • 如何找到给定字符串的最长重复子串

    我是java新手 我被分配寻找字符串的最长子字符串 我在网上研究 似乎解决这个问题的好方法是实现后缀树 请告诉我如何做到这一点或者您是否有任何其他解决方案 请记住 这应该是在 Java 知识水平较低的情况下完成的 提前致谢 附 测试仪字符串
  • 给定两个 SSH2 密钥,我如何检查它们是否属于 Java 中的同一密钥对?

    我正在尝试找到一种方法来验证两个 SSH2 密钥 一个私有密钥和一个公共密钥 是否属于同一密钥对 我用过JSch http www jcraft com jsch 用于加载和解析私钥 更新 可以显示如何从私钥 SSH2 RSA 重新生成公钥
  • 制作一个交互式Windows服务

    我希望我的 Java 应用程序成为交互式 Windows 服务 用户登录时具有 GUI 的 Windows 服务 我搜索了这个 我发现这样做的方法是有两个程序 第一个是服务 第二个是 GUI 程序并使它们进行通信 服务将从 GUI 程序获取
  • Spring @RequestMapping 带有可选参数

    我的控制器在请求映射中存在可选参数的问题 请查看下面的控制器 GetMapping produces MediaType APPLICATION JSON VALUE public ResponseEntity
  • 使用Caliper时如何指定命令行?

    我发现 Google 的微型基准测试项目 Caliper 非常有趣 但文档仍然 除了一些示例 完全不存在 我有两种不同的情况 需要影响 JVM Caliper 启动的命令行 我需要设置一些固定 最好在几个固定值之间交替 D 参数 我需要指定
  • 总是使用 Final?

    我读过 将某些东西做成最终的 然后在循环中使用它会带来更好的性能 但这对一切都有好处吗 我有很多地方没有循环 但我将 Final 添加到局部变量中 它会使速度变慢还是仍然很好 还有一些地方我有一个全局变量final 例如android Pa
  • 加密 JBoss 配置中的敏感信息

    JBoss 中的标准数据源配置要求数据库用户的用户名和密码位于 xxx ds xml 文件中 如果我将数据源定义为 c3p0 mbean 我会遇到同样的问题 是否有标准方法来加密用户和密码 保存密钥的好地方是什么 这当然也与 tomcat
  • AWS 无法从 START_OBJECT 中反序列化 java.lang.String 实例

    我创建了一个 Lambda 函数 我想在 API 网关的帮助下通过 URL 访问它 我已经把一切都设置好了 我还创建了一个application jsonAPI Gateway 中的正文映射模板如下所示 input input params
  • 如何从指定日期获取上周五的日期? [复制]

    这个问题在这里已经有答案了 如何找出上一个 上一个 星期五 或指定日期的任何其他日期的日期 public getDateOnDay Date date String dayName 我不会给出答案 先自己尝试一下 但是 也许这些提示可以帮助
  • 玩!框架:运行“h2-browser”可以运行,但网页不可用

    当我运行命令时activator h2 browser它会使用以下 url 打开浏览器 192 168 1 17 8082 但我得到 使用 Chrome 此网页无法使用 奇怪的是它以前确实有效 从那时起我唯一改变的是JAVA OPTS以启用
  • simpleframework,将空元素反序列化为空字符串而不是 null

    我使用简单框架 http simple sourceforge net http simple sourceforge net 在一个项目中满足我的序列化 反序列化需求 但在处理空 空字符串值时它不能按预期工作 好吧 至少不是我所期望的 如
  • 如何修复 JNLP 应用程序中的“缺少代码库、权限和应用程序名称清单属性”?

    随着最近的 Java 更新 许多人都遇到了缺少 Java Web Start 应用程序的问题Codebase Permissions and Application name体现属性 尽管有资源可以帮助您完成此任务 但我找不到任何资源综合的
  • 如何实现仅当可用内存较低时才将数据交换到磁盘的写缓存

    我想将应用程序生成的数据缓存在内存中 但如果内存变得稀缺 我想将数据交换到磁盘 理想情况下 我希望虚拟机通知它需要内存并将我的数据写入磁盘并以这种方式释放一些内存 但我没有看到任何方法以通知我的方式将自己挂接到虚拟机中before an O

随机推荐

  • Docker基本概念、linux

    Docker的基本概念 一 认识容器 1 1 容器是什么 1 2 对比容器和虚拟机 1 2 1 虚拟化的差异 1 2 2 资源利用总结 二 Docker基本概念 2 1 Docker是什么 2 2 Docker 的思想与核心 2 3 Doc
  • Qt-常用数据类型

    常用基本数据类型 类型名称 注释 备注 qint8 signed char 有符号8位数据类型 qint16 signed short 有符号16位数据类型 qint32 signed int 有符号32位数据类型 qint64 long
  • php7 发送邮件,使用PHP发送邮件的两种方法

    使用PHP发送邮件的两种方法 如何使用使用PHP发送邮件呢 想要知道的朋友 以下是为大家分享的使用PHP发送邮件的两种方法 供大家参考借鉴 欢迎浏览 一 使用PHP内置的mail 函数 看了一下手册 就直接开始写代码了 如下 to test
  • 超人气思维导图XMind新年新版本,这6个新功能你一定要看

    2018 年初 XMind公司推出了这款花了三年时间重写了每一行代码的新旗舰产品XMind ZEN 经过不断的优化和完善 终于成为了一款全平台 功能丰富的优秀思维导图软件 如今已然成为国内人气思维导图软件 噔噔噔 今年XMind ZEN正式
  • Java面向对象编程

    关于抽象类与最终类 下列说法错误的是 A 抽象类能被继承 最终类只能被实例化 B 抽象类和最终类都可以被声明使用 C 抽象类中可以没有抽象方法 最终类中可以没有最终方法 D 抽象类和最终类被继承时 方法可以被子类覆盖 答案 D 已知表达式i
  • 【wpf,C#】wpf访问连接Oracle数据库的详细过程及代码(第2种方法)

    注 之前写了一篇很详细的wpf连接Oracle的过程及代码 这一篇是另外一种方法 文件是我们自己写的 小伙伴们 亦可以完成此功能 1 添加引用文件 System Data OracleClient 如图 2 新建一个类 我这里命名为 MyO
  • 【JavaScript】(四)创建对象的7种模式

    面向对象的语言有一个标志 那就是他们都有类的概念 而通过类可以创建多个具有相同属性和方法的对象 ECMAScript的对象没有类的概念 因此它的对象也与基于类的语言对象有所不同 早期JavaScript开发人员创建类的方法是创建一个Obje
  • 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。

    题目信息 给定一个整数数组 nums 和一个整数目标值 target 请你在该数组中找出 和为目标值 的那 两个 整数 并返回它们的数组下标 你可以假设每种输入只会对应一个答案 但是 数组中同一个元素不能使用两遍 你可以按任意顺序返回答案
  • 2021-2022学年度第二学期21级Java程序设计理论模拟考试

    说明 由于看pdf太难受了 重新编辑好放到博客上 方便自己复习 正确答案加粗标红 考试试卷 页码 1 4 试卷名称 2021 2022学年度第二学期21级Java程序设计理论模拟考试 3 4 6班 期末考试考试课程 Java语言程序设计 考
  • SSM框架组建之业务逻辑与总体架构规划

    SSM框架组建之总体架构规划与项目发布 第一步 项目整体逻辑设计 第二步 DAO层框架构建 第三步 构建Service层 第四步 web 层设计 第五步 SSM 项目的打包与发布 win10 从 Tomcat 服务器到局域网 1 Tomca
  • 炉石传说 古墓惊魂 灾祸领主 英雄技能

    英雄难度 维希 鱼人灾祸领主 第一阶段 Made of Murlocs来自鱼人Passive Hero Power You are Immune After a Murloc dies lose 3 Health 被动英雄技能 免疫 在一个
  • this.getClass().getClassLoader().getResource("");

    lt 1 gt 调用对象的getClass 方法是获得对象当前的类类型 这部分数据存在方法区中 lt 2 gt 类类型上调用getClassLoader 方法是得到当前类型的类加载器 我们知道在Java中所有的类都是通过类加载器加载到虚拟机
  • Angular Material 每个版本的不同

    Angular Material 在每个版本中都会引入一些新的功能 修复 bug 并进行性能改进 以下是一些不同版本的 Angular Material 的主要变化 1 Angular Material 2 这是 Angular Mater
  • centos7安装python3及问题解决

    centos7安装python3及问题解决 Centos7中默认的Python版本为2 7 在2020年python官方将不再支持2 7版本的python 所以使用3 x版本的python是必要的 下载地址 https www python
  • 如何管理一个技术团队

    一 流程规范 迭代流程规范 制定迭代流程规范 详情见 https www cnblogs com expiator p 17149931 html 编码规范 可以使用 阿里巴巴java开发手册 规范代码 二 考核 研发考核 1 优秀的考核方
  • 计算机绘图中有六种方法绘圆,计算机绘图3_5-6章.ppt

    计算机绘图3 5 6章 第5章 规划与管理图层 5 3 使用图层 当前主流的图形 图像处理软件 Flash UG Potoshop 都具有图层概念 AutoCAD也不例外 图层好比是一张透明的纸 图形被画在其中 如图示 图层A上放置了剖面线
  • 水仙花数python代码多种方式_水仙花数的三种解决方法(Python实现)

    先来了解一下什么是水仙花数 水仙花数是这样一个三位数 它的个位数 十位数 百位数的三次方之和 等于它自身 例如 153就是一个水仙花数 因为153 1 3 5 3 3 3 470也是一个水仙花数 因为470 4 3 7 3 0 3 我们今天
  • VScode前端开发必备插件——Emmet配置及常用语法

    Emmet是前端开发中必不可少的一个vscode插件 配置好后 可以通过tab键结合其特定的语法来实现快速生成包含嵌套结构的批量HTML标签 本文只整理常用语法 不常用的可至官网查询 https emmet io 0x01 VScode中配
  • Flask基本用法,可用于mock测试

    基本用法 可用于mock测试 对于一些三方接口不方便造数据的情况下 自定义接口返回是自己的目标数据来处理自己的程序逻辑 from flask import Flask app Flask name 启用后 表示使用post请求http 12
  • java获取中文全拼/首字母工具以及大小写转换

    pom