案例一:去掉数据库某列中的所有英文,利用java正则表达式去做,核心:去掉字符串中的英文

简介: 这篇文章介绍了如何使用Java正则表达式从数据库某列中去除所有英文字符。

前言

记录一下开发中的小问题

一、问题描述

数据库中的某一列有中英文,如下:
在这里插入图片描述
要求删除FLAVOR_NAME这一列中的英文,如果只有几行就直接手冻了,但是有150行,再手动就太麻烦了,代码操作搞起

二、解决方法

1. 解决逻辑说明

  1. 先从数据库获取所有的ID和FLAVOR_NAME,为一个javabean 的listA集合。
  2. 然后新建一个listB集合;对listA集合遍历,对每一个Javabean 进行修改 flavorName 的值,进行去掉英文(一会儿讲),然后添加到listB集合
  3. 再对集合listB进行遍历,进行数据库的修改即可。

2. 利用java正则表达式去掉字符串中英文

去掉字符串的英文逻辑:

  1. 先将字符串变成字符数组
  2. 再对字符数组遍历
  3. 对每一个字符进行判断是否问英文(注意大小写)
  4. 再进行取舍操作。
  5. 去掉字符串中的英文代码案例如下:
    package com.adt.service.xfadvice.rpc;

    import java.util.regex.Matcher;
    import java.util.regex.Pattern;

    /**
     * @ClassName Test
     * @Description TODO
     * @Author admin
     * @Date 2021/3/11 9:42
     * @Version 1.0
     */
    public class Test {

        public static void main(String[] args) {
            String flavorName = "冯凡利&abcAsdfghfxxjSASAEFGBV";
            char[] chars = flavorName.toCharArray();
            StringBuffer stringBuffer = new StringBuffer();
            for (char c : chars) {
                Pattern p = Pattern.compile("[a-zA-Z]");
                Matcher matcher = p.matcher(String.valueOf(c));
                if (matcher.matches()) {

                } else {
                    stringBuffer.append(c);
                }
            }
            System.out.println(stringBuffer.toString());
            // 输出结果是: 冯凡利&
        }
    }

三、解决代码


        List<CoffeeFlavorCode> idAndFlavorNames = coffeeFlavorCodeMapper.getIdAndFlavorName();
        List<CoffeeFlavorCode> list = new ArrayList<>();
        for (CoffeeFlavorCode code : idAndFlavorNames){
            CoffeeFlavorCode coffeeFlavorCode = new CoffeeFlavorCode();
            coffeeFlavorCode.setId(code.getId());
            String flavorName = code.getFlavorName();
            char[] chars = flavorName.toCharArray();
            StringBuffer stringBuffer = new StringBuffer();
            for (char c : chars){
                Pattern p = Pattern.compile("[a-zA-Z]");
                Matcher matcher = p.matcher(String.valueOf(c));
                if (matcher.matches()){

                }else{
                    stringBuffer.append(c);
                }
            }
            coffeeFlavorCode.setFlavorName(stringBuffer.toString().trim());
            list.add(coffeeFlavorCode);
        }
        Integer count = 0;
        for (CoffeeFlavorCode code : list){
            int i = coffeeFlavorCodeMapper.updateCoffeeFlavorNameById(code);
            count +=i;
        }
相关文章
|
21天前
|
SQL Java 索引
java小工具util系列2:字符串工具
java小工具util系列2:字符串工具
137 83
|
21天前
|
Java 数据库
java小工具util系列1:日期和字符串转换工具
java小工具util系列1:日期和字符串转换工具
52 26
|
11天前
|
关系型数据库 MySQL 数据库
数据库数据恢复—MYSQL数据库文件损坏的数据恢复案例
mysql数据库文件ibdata1、MYI、MYD损坏。 故障表现:1、数据库无法进行查询等操作;2、使用mysqlcheck和myisamchk无法修复数据库。
|
19天前
|
Java API 开发者
Java中的Lambda表达式与Stream API的协同作用
在本文中,我们将探讨Java 8引入的Lambda表达式和Stream API如何改变我们处理集合和数组的方式。Lambda表达式提供了一种简洁的方法来表达代码块,而Stream API则允许我们对数据流进行高级操作,如过滤、映射和归约。通过结合使用这两种技术,我们可以以声明式的方式编写更简洁、更易于理解和维护的代码。本文将介绍Lambda表达式和Stream API的基本概念,并通过示例展示它们在实际项目中的应用。
|
25天前
|
存储 缓存 安全
java 中操作字符串都有哪些类,它们之间有什么区别
Java中操作字符串的类主要有String、StringBuilder和StringBuffer。String是不可变的,每次操作都会生成新对象;StringBuilder和StringBuffer都是可变的,但StringBuilder是非线程安全的,而StringBuffer是线程安全的,因此性能略低。
44 8
|
21天前
|
Java API 开发者
Java中的Lambda表达式:简洁代码的利器####
本文探讨了Java中Lambda表达式的概念、用途及其在简化代码和提高开发效率方面的显著作用。通过具体实例,展示了Lambda表达式如何在Java 8及更高版本中替代传统的匿名内部类,使代码更加简洁易读。文章还简要介绍了Lambda表达式的语法和常见用法,帮助开发者更好地理解和应用这一强大的工具。 ####
|
23天前
|
并行计算 Java 编译器
深入理解Java中的Lambda表达式
在Java 8中引入的Lambda表达式,不仅简化了代码编写,还提升了代码可读性。本文将带你探索Lambda表达式背后的逻辑与原理,通过实例展示如何高效利用这一特性优化你的程序。
|
21天前
|
SQL 数据库
GBase8a 数据库集群v953扩容案例问题分享
GBase8a 数据库集群v953扩容案例问题分享
|
21天前
|
SQL 数据库
gbase 8a 数据库 SQL优化案例-关联顺序优化
gbase 8a 数据库 SQL优化案例-关联顺序优化
|
22天前
|
存储 SQL 数据库
Sybase数据恢复—Sybase数据库常见问题之数据库无法启动的恢复案例
Sybase数据库数据恢复环境: Sybase数据库版本:SQL Anywhere 8.0。 Sybase数据库故障&分析: Sybase数据库无法启动。 使用Sybase Central连接报错。 数据库数据恢复工程师经过检测,发现Sybase数据库出现故障的原因是:异常断电造成Sybase数据库无法回写正常数据,导致多个存储页数据不一致,系统表描述和存储表不一致,部分存储页底层数据完全杂乱。