fix pinyin bug

This commit is contained in:
Looly 2020-06-16 10:58:55 +08:00
parent cf19fe3003
commit 165b915506
4 changed files with 34 additions and 1 deletions

View File

@ -18,6 +18,7 @@
* 【poi 】 修复WordWriter写表格问题pr#914@Github
* 【core 】 修复IoUtil.readBytes缓存数组长度问题issue#I1KIUE@Gitee
* 【core 】 修复BigExcelWriter多次flush导致的问题issue#920@Github
* 【extra 】 绕过Pinyin4j最后一个分隔符失效的bugissue#921@Github
-------------------------------------------------------------------------------------------------------------

View File

@ -1,6 +1,7 @@
package cn.hutool.extra.pinyin.engine.pinyin4j;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.extra.pinyin.PinyinEngine;
import cn.hutool.extra.pinyin.PinyinException;
import net.sourceforge.pinyin4j.PinyinHelper;
@ -82,11 +83,16 @@ public class Pinyin4jEngine implements PinyinEngine {
@Override
public String getPinyin(String str, String separator) {
// 添加一个后缀是为了解决Pinyin4j的bug在指定分隔符后最后两个词的分隔符失效
str += StrUtil.SPACE;
String result;
try {
return PinyinHelper.toHanYuPinyinString(str, format, separator, true);
result = PinyinHelper.toHanYuPinyinString(str, format, separator, true);
} catch (BadHanyuPinyinOutputFormatCombination e) {
throw new PinyinException(e);
}
return StrUtil.removeSuffix(result, StrUtil.SPACE);
}
}

View File

@ -1,5 +1,6 @@
package cn.hutool.extra.pinyin;
import cn.hutool.extra.pinyin.engine.pinyin4j.Pinyin4jEngine;
import org.junit.Assert;
import org.junit.Test;
@ -11,6 +12,13 @@ public class PinyinUtilTest {
Assert.assertEquals("ni hao", pinyin);
}
@Test
public void getPinyinByPinyin4jTest(){
final Pinyin4jEngine engine = new Pinyin4jEngine();
final String pinyin = engine.getPinyin("你好", " ");
Assert.assertEquals("ni hao", pinyin);
}
@Test
public void getPinyinUpperCaseTest(){
final String pinyin = PinyinUtil.getPinyin("你好怡", " ");
@ -22,4 +30,11 @@ public class PinyinUtilTest {
final String result = PinyinUtil.getFirstLetter("H是第一个", ", ");
Assert.assertEquals("h, s, d, y, g", result);
}
@Test
public void getFirstLetterByPinyin4jTest(){
final Pinyin4jEngine engine = new Pinyin4jEngine();
final String result = engine.getFirstLetter("林海", "");
Assert.assertEquals("lh", result);
}
}

View File

@ -52,6 +52,17 @@ public class HttpUtil {
return url.toLowerCase().startsWith("https");
}
/**
* 检测是否http
*
* @param url URL
* @return 是否https
* @since 5.3.8
*/
public static boolean isHttp(String url) {
return url.toLowerCase().startsWith("http");
}
/**
* 创建Http请求对象
*