java字符操作获取汉字的拼音以及其他常用工具

公司需求年年有,今年有点小特殊,哈哈。

忽然加了个需求,说要实现汉字转拼音查询。

在努力下写出来了,现在分享一下吧!!!

/**
* 汉字转拼音缩写
*
* @param str
* 要转换的汉字字符串
* @return String 拼音缩写
*/
public static String getPYString(String str) {
String tempStr = "";
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
if (c >= 33 && c <= 126) {// 字母和符号原样保留
tempStr += String.valueOf(c);
} else {// 累加拼音声母
tempStr += getPYChar(String.valueOf(c));
}
}

if (tempStr.length() > 1) {
tempStr = tempStr.substring(0, 1);
}

return tempStr;
}

/**
* 取单个字符的拼音声母
*
* @param c
* //要转换的单个汉字
* @return String 拼音声母
*/
public static String getPYChar(String c) {
byte[] array = new byte[2];
array = String.valueOf(c).getBytes();
int i = (short) (array[0] - ‘\0‘ + 256) * 256
+ ((short) (array[1] - ‘\0‘ + 256));
if (i < 0xB0A1)
return "*";
if (i < 0xB0C5)
return "a";
if (i < 0xB2C1)
return "b";
if (i < 0xB4EE)
return "c";
if (i < 0xB6EA)
return "d";
if (i < 0xB7A2)
return "e";
if (i < 0xB8C1)
return "f";
if (i < 0xB9FE)
return "g";
if (i < 0xBBF7)
return "h";
if (i < 0xBFA6)
return "j";
if (i < 0xC0AC)
return "k";
if (i < 0xC2E8)
return "l";
if (i < 0xC4C3)
return "m";
if (i < 0xC5B6)
return "n";
if (i < 0xC5BE)
return "o";
if (i < 0xC6DA)
return "p";
if (i < 0xC8BB)
return "q";
if (i < 0xC8F6)
return "r";
if (i < 0xCBFA)
return "s";
if (i < 0xCDDA)
return "t";
if (i < 0xCEF4)
return "w";
if (i < 0xD1B9)
return "x";
if (i < 0xD4D1)
return "y";
if (i < 0xD7FA)
return "z";
return "*";
}

</textarea >

另外在做程序的时候,很多时候都是需要做时间字符转译,填充下

文章的内容吧。现在给出对应的时间字符的转换!!!

public static final String DATE_FORMAT = "yyyy-MM-dd HH:mm";
public static final String DATE_FORMAT2 = "yyyy-MM-dd HH:mm:ss";
public static final String YEAR_MONTH_FORMAT = "yyyy-MM";
public static final String DATE_FORMAT3 = "HH:mm:ss";
public static final String DATE_FORMAT1 = "yyyyMMddHHmmss";

/**
* 时间格式,采用24小时制
*/
public static final String TIME_FORMAT = "HH:mm";
/**
* 不带秒的时间日期格式
*/
public static final String DATE_FORMAT_NO_SECOND = "yyyy-MM-dd HH:mm";
/**
* 不是时间的日期格式
*/
public static final String DATE_FORMAT_NO_TIME = "yyyy-MM-dd";

// 返回对应的时间字符串
public static String getStrByDate(Date date) {
String str = "";
SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT);
str = sdf.format(date);
return str;
}

// 返回对应的时间字符串
public static String getStrByDate2(Date date) {
String str = "";
SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT);
str = sdf.format(date);
return str;
}

// 返回对应的时间字符串
public static String getStrByDate1(Date date) {
String str = "";
SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT2);
str = sdf.format(date);
return str;
}

/**
* 将日期转换成字符串格式
*
* @param date
* @return
*/
public static String dateTran2Str(Date date) {
SimpleDateFormat dateFormat = new SimpleDateFormat(
StrUtil.DATE_FORMAT_NO_SECOND);
return dateFormat.format(date);
}

/**
* 将日期转换成字符串格式
*
* @param date
* @return
*/
public static String BillRandom(Date date) {
SimpleDateFormat dateFormat = new SimpleDateFormat(StrUtil.DATE_FORMAT1);
return dateFormat.format(date);
}

/**
* 将日期转换成字符串格式
*
* @param date
* @param format日期格式
* @return
*/
public static String dateTran2Str(Date date, String format) {
SimpleDateFormat dateFormat = new SimpleDateFormat(format);
return dateFormat.format(date);
}

/**
* 将日期转换成字符串格式
*
* @param date
* @param format日期格式
* @return
*/
public static String dateTran2Str(Object date, String format) {
SimpleDateFormat dateFormat = new SimpleDateFormat(format);
return dateFormat.format(date);
}

/**
* 将日期转换成字符串格式
*
* @param date
* @param format日期格式
* @return
*/
public static String dateTran2Str(Object date) {
SimpleDateFormat dateFormat = new SimpleDateFormat(
DATE_FORMAT_NO_SECOND);
return dateFormat.format(date);
}

/**
* 带秒的时间格式
*
* @param date
* @param format日期格式
* @return
*/
public static String dateTranStr2exc(Object date) {
SimpleDateFormat dateFormat = new SimpleDateFormat(DATE_FORMAT2);
return dateFormat.format(date);
}

/**
* 将日期型字符串转换为日期
*
* @param dateStr
* 一定要是日期转过来的日期型字符串,否则会有ParseException
* @return null表示ParseException
*/
public static Date strTran2Date(String dateStr) {
try {
return new SimpleDateFormat(StrUtil.DATE_FORMAT_NO_SECOND)
.parse(dateStr);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}

/**
* 将日期型字符串转换为日期
*
* @param dateStr
* 一定要是日期转过来的日期型字符串,否则会有ParseException
* @param pattern指定的时间格式
* @return null表示ParseException
*/
public static Date strTran2Date(String dateStr, String pattern) {
try {
return new SimpleDateFormat(pattern).parse(dateStr);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}

/**
* float型数据转换成String
*
* @param f
* @return
*/
public static String floatTran2Str(float f) {
return String.valueOf(f);
}

/**
* 将时间转换成long型时间戳
*
* @param timeStr
* 时间的字符串表示,格式为:HH:mm
* @return
*/
public static Long strTran2Time(String timeStr) {
SimpleDateFormat timeFormat = new SimpleDateFormat(TIME_FORMAT);
Date time = null;
try {
int len = timeStr.length();
if (timeStr.length() > 10) {
timeStr = timeStr.substring(10);
}
time = timeFormat.parse(timeStr);
return time.getTime();
} catch (ParseException e) {
System.out.println(new Exception("日期格式非法!").getMessage());
}
return null;
}

/**
* 将数据库的时间转换成字符串
*
* @param t时间
* @return
*/
public static String timeTran2Str(Object t) {
SimpleDateFormat timeFormat = new SimpleDateFormat(TIME_FORMAT);
String timeStr = null;
timeStr = timeFormat.format(t);
return timeStr;
}

/**
* 将时间戳转换成字符串
*
* @param timestampString
* @return
*/
public static String timeStamp2Date(String timestampString) {
Long timestamp = Long.parseLong(timestampString) * 1000;
String date = new java.text.SimpleDateFormat("yyyy-MM-dd")
.format(new java.util.Date(timestamp));
return date;
}

public static String strTranBirth(String day) {
if (day.length() == 8) {
String y = day.substring(0, 4);
String m = day.substring(4, 6);
String d = day.substring(6, 8);
return y + "-" + m + "-" + d;
}
return day;
}

最后,我们经常要做一些字符为空判断之类的,和其他数据的正则

表达式的验证,现在也给出福利吧!!!

/**
* 判断输入的字符串参数是否为空
*
* @return boolean 空则返回true,非空则flase
*/
public static boolean isEmpty(String input) {
return null == input || 0 == input.length()
|| 0 == input.replaceAll("\\s", "").length();
}

/**
* 判断输入的字节数组是否为空
*
* @return boolean 空则返回true,非空则flase
*/
public static boolean isEmpty(byte[] bytes) {
return null == bytes || 0 == bytes.length;
}

/**
* 字节数组转为字符串
*
* @see 该方法默认以ISO-8859-1转码
* @see 若想自己指定字符集,可以使用<code>getString(byte[] data, String charset)</code>方法
*/
public static String getString(byte[] data) {
String str = "";
try {
str = new String(data, "ISO-8859-1");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return str;
}

// 匹配输入数据类型
public static boolean matchCheck(String ins, int type) {
String pat = "";
switch (type) {
case 0: // /手机号
pat = "^1[3-8][0-9]{9}$";
break;
case 1:// /邮箱
pat = "^[a-zA-Z0-9][\\w\\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\\w\\.-]*[a-zA-Z0-9]\\.[a-zA-Z][a-zA-Z\\.]*[a-zA-Z]$";
break;

case 2: // /用户名
pat = "^[0-9a-zA-Z]{4,12}$";
break;
case 3: // /密码
pat = "^[\\s\\S]{6,18}$";
break;
case 4: // /中文
pat = "^[0-9a-z\u4e00-\u9fa5|admin]{2,15}$";
break;
case 5: // /非零正整数
pat = "^\\+?[1-9][0-9]*$";
break;
case 6: // /数字和字母
pat = "^[A-Za-z0-9]+$";
break;
case 7: // /1-9的数字
pat = "^[1-9]";
break;
case 8: // /身份证
pat = "^(\\d{15}$|^\\d{18}$|^\\d{17}(\\d|X|x))$";
break;
case 9: // /名字
pat = "^([A-Za-z]|[\u4E00-\u9FA5])+$";
break;
case 10: // /时间 时:分:秒
pat = "^([0-1][0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])$";
break;
}
Pattern p = Pattern.compile(pat);
Matcher m = p.matcher(ins);
return m.matches();
}

时间: 2024-10-09 23:17:58

java字符操作获取汉字的拼音以及其他常用工具的相关文章

java字符操作获取汉字的拼音以及其它经常使用工具

公司需求年年有,今年有点小特殊,哈哈. 忽然加了个需求,说要实现汉字转拼音查询. 在努力下写出来了,如今分享一下吧!.! /** * 汉字转拼音缩写 * * @param str * 要转换的汉字字符串 * @return String 拼音缩写 */ public static String getPYString(String str) { String tempStr = ""; for (int i = 0; i < str.length(); i++) { char c

iOS获取汉字的拼音

在iOS开发中经常涉及到汉字的排序,最常见的就是需要根据首字母的字符顺序排列,比如常见的通讯录等.总结出来,大致可以分为两种方法,其中参考文献[1]中提供的方法十分复杂,并且代码量很大,不建议采用.另一种方法是直接采用Core Foundation中提供的方法,十分简单,封装好的代码如下: 1 - (NSString *)transform:(NSString *)chinese{ 2 //将NSString装换成NSMutableString 3 NSMutableString *pinyin

C# 获取汉字的拼音首字母(转)

原文:https://blog.csdn.net/younghaiqing/article/details/62417269 一种是把所有中文字符集合起来组成一个对照表:另一种是依照汉字在Unicode编码表中的排序来确定拼音的首字母.碰到多音字时就以常用的为准(第一种方法中可以自行更改,方法为手动把该汉字移动到对应的拼音首字母队列,我们这里介绍第二种. 获取汉字拼音的首字母是一个在做项目的过程中经常需要用到的功能,今天我们主要来探讨下C# 获取汉字的拼音首字母 static void Main

iOS 获取汉字的拼音 CFStringTransform

在ios开发中经常碰需要将汉字转成拼音的情况,以下就是我把汉字转成拼音的方法 代码实现 + (NSString *)transform:(NSString *)chinese{ //将NSString装换成NSMutableString NSMutableString *pinyin = [chinese mutableCopy]; //将汉字转换为拼音(带音标) CFStringTransform((__bridge CFMutableStringRef)pinyin, NULL, kCFSt

C# 获取汉字的拼音首字母

/// <summary> /// 在指定的字符串列表CnStr中检索符合拼音索引字符串 /// </summary> /// <param name="CnStr">汉字字符串</param> /// <returns>相对应的汉语拼音首字母串</returns> public static string GetSpellCode(string CnStr) { string strTemp="&quo

SqlServer 获取汉字的拼音首字母

一.该函数传入字符串,返回数据为:如果为汉字字符,返回该字符的首字母,如果为非汉字字符,则返回本身.二.用到的知识点:汉字对应的UNICODE值,汉字的排序规则.三.数据库函数: CREATE FUNCTION GetInitialLetter(@ChineseString NVARCHAR(4000)) RETURNS NVARCHAR(4000) AS BEGIN DECLARE @SingleCharacter NCHAR(1), @ReturnString NVARCHAR(4000)

PHP获取汉字的拼音(全部与首字母)(转载)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 8

sql获取汉字的拼音首字母

if exists (select * from sysobjects where id = object_id(N'[fn_ChineseToSpell]') and xtype in (N'FN', N'IF', N'TF')) www.2cto.com drop function [fn_ChineseToSpell]GO/*创建取拼音首字母函数*/ create function [dbo].[fn_ChineseToSpell](@strChinese varchar(500)='')

PHP获取汉字的拼音(全部与首字母)(转载博博客园2778085001)

<?php class GetPingYing {     private $pylist = array( 'a'=>-20319, 'ai'=>-20317, 'an'=>-20304, 'ang'=>-20295, 'ao'=>-20292, 'ba'=>-20283, 'bai'=>-20265, 'ban'=>-20257, 'bang'=>-20242, 'bao'=>-20230, 'bei'=>-20051, 'ben