java 判断以中文开始_java判断是否是中文字符

news/2025/2/25 5:30:24

public class StringUtil {

/**

* 判断是否为中文字符

* @param c

* @return

*/

private static boolean isChinese(char c) {

// GENERAL_PUNCTUATION 判断中文的“号

// CJK_SYMBOLS_AND_PUNCTUATION 判断中文的。号

// HALFWIDTH_AND_FULLWIDTH_FORMS 判断中文的,号

Character.UnicodeBlock ub = Character.UnicodeBlock.of(c);

if (ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS

|| ub == Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS

|| ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A

|| ub == Character.UnicodeBlock.GENERAL_PUNCTUATION

|| ub == Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION

|| ub == Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS) {

return true;

}

return false;

}

/**

* 转换成AS400字符数组

* @param srcStr

* @param len

* @return

*/

private static  char[] getAS400Char(String srcStr,int len) {

char[] charArray = srcStr.toCharArray();

int dbLength = 0 ;

boolean start = false ;  // 中文开始

boolean end = false ;  // 中文结束

boolean duration = false ;  // 中文持续

int charLength = 0 ;

for (int i = 0; i < charArray.length; i++) {

// 判断是否是中文字符

if (isChinese(charArray[i])) {

if(duration)

start = false ;

else

start = true ;

duration = true ;

end = false ;

dbLength ++ ;  // 中文字符本身就应当比普通字符多一位

}

else if(duration){  // 遇到非中文字符时,如果已经开始中文,那么结束

end = true ;

}

dbLength ++ ;  // 无论如何占一位长度

//如果中文开始,那么加一位

if(start){

dbLength ++ ;

start = false ;

}

// 如果中文结束,加一位

if(duration && end){

dbLength ++ ;

duration = false ;

}

// 如果数据库长度超过限制,那么退出

if(dbLength > len)

break ;

else if(duration){ // 如果是中文字符中,因为下次无论如何一定会增加一位长度,如果此长度超过,那么退出

if((dbLength +1) > len)

break ;

}

charLength ++ ;

}

char[] targetArr = new char[charLength] ;

for(int i = 0 ; i < charLength ; i ++){

targetArr[i] = charArray[i] ;

}

return targetArr ;

}

/**

* 获取指定长度的符合AS400存储规范的字符串

* @param srcStr

* @param len

* @return

*/

public static String getAS400Str(String srcStr,int len){

if(srcStr == null)

return null ;

return String.valueOf(getAS400Char(srcStr, len)) ;

}   }


http://www.niftyadmin.cn/n/4204502.html

相关文章

百度-相信中国-电子书-下载

/Files/dayouluo/相信中国.rar

JS之给元素添加类的方法

原生js中添加类的方法 //1.为 <div> 元素添加一个类: document.getElementById("div").classList.add("类名");//2.为 <div> 元素添加多个类: document.getElementById("div").classList.add("类名1","类名2",…

java中io操作详解_Java语言中的IO系统详解

Java语言中的IO系统Java的核心库java.io提供了全面的IO接口&#xff0c;包括&#xff1a;文件读写&#xff0c;标准设备输出等等。Java中IO是以流为基础进行输入输出的&#xff0c;所有数据被串行化写入输出流&#xff0c;或者从输入流读入。在具体使用中很多初学者对Java.io包…

工程师侵入北京移动数据库 获利370余万元

程稚瀚称&#xff0c;侵入北京移动数据库是因为他对移动的“霸王条款”不满。  在5个月的时间里&#xff0c;软件研发工程师程稚瀚利用互联网4次侵入北京移动充值中心数据库&#xff0c;盗取充值卡密码并通过淘宝网出售&#xff0c;共获利370余万元。昨天&#xff0c;这起全国…

mysql-8.0.12版本忘记root密码解决方法(重置root密码)

解决方法&#xff1a; 1.以管理员身份运行命令行&#xff0c;输入命令&#xff1a;net stop mysql&#xff0c;以停止MySQL服务 2.设置跳过验证&#xff0c;进入到mysql安装目录下的bin路径&#xff0c;在mysql/bin/目录下输入命令&#xff1a;“mysqld --shared-memory --sk…

java界面控件_java-图形界面(控件)

java-图形界面(控件)java-图形界面(控件)记录学习过程import javax.swing.*;import java.awt.*;public class LoginPanel extends JPanel {public static final int LEFT_PADDING50;public static final int RIGHT_PADDING50;public static final int TOP_PADDING20;public sta…

adb命令汇总

adbtools 看unity在安卓设备上的运行情况&#xff0c;看logcat 还有看内存占用情况。 这是我在短暂的安卓开发过程&#xff0c;汇总的知识点&#xff0c;如果好用请留言告诉。 使用adb命令管理设备 adb devices 显示连接到计算机的设备 adb get-serialno…

java.time日历_日期和日历Java

TL;博士LocalDate.of( 1986 , Month.FEBRUARY , 23 )日期,只这些类都不是,Date&日历,适合.您显然想要一个仅具有日期的值,而没有日期和时区.相反,Date类是带有UTC时间的日期时间的日期,而Calendar是带有时区的日期时间.此外,Date& Calendar已过时,已由java.time类取代.…