pinyin4j icon indicating copy to clipboard operation
pinyin4j copied to clipboard

输出拼音缺少分隔符

Open wangdamu opened this issue 8 years ago • 8 comments

HanyuPinyinOutputFormat outputFormat = new HanyuPinyinOutputFormat(); outputFormat.setToneType(HanyuPinyinToneType.WITH_TONE_NUMBER); outputFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE); outputFormat.setVCharType(HanyuPinyinVCharType.WITH_V); String pinyin = PinyinHelper.toHanYuPinyinString("一日千里", outputFormat, " ", true); System.out.println(pinyin);

输出: yi1 ri4 qian1li3

wangdamu avatar Dec 06 '16 03:12 wangdamu

同样遇到该问题,有些词语出现分隔符失效的问题,拼音没有分隔开。

yupnano avatar Mar 14 '19 14:03 yupnano

同样遇到该问题,有些词语出现分隔符失效的问题,拼音没有分隔开

jliuchen avatar Apr 29 '19 04:04 jliuchen

同样遇到该问题,请问有解决办法吗?

fengzheng0571 avatar Feb 12 '20 07:02 fengzheng0571

这个库很久没维护了,来这里一起搞吧:https://github.com/wnjustdoit/pinyin4j

wnjustdoit avatar May 29 '20 08:05 wnjustdoit

我也被这个bug坑到了,原因是插入分隔符的时候逻辑判断有问题,多个汉字最后两个汉字的分隔符没有插入导致的。

hutool的解决办法是:

// 添加一个后缀是为了解决Pinyin4j的bug,在指定分隔符后,最后两个词的分隔符失效
str += " ";
String result;
try {
	result = PinyinHelper.toHanYuPinyinString(str, format, separator, true);
} catch (BadHanyuPinyinOutputFormatCombination e) {
	throw new PinyinException(e);
}

return result.substring(0, result.length()-1);

looly avatar Jun 16 '20 03:06 looly

我也被这个bug坑到了,原因是插入分隔符的时候逻辑判断有问题,多个汉字最后两个汉字的分隔符没有插入导致的。

hutool的解决办法是:

// 添加一个后缀是为了解决Pinyin4j的bug,在指定分隔符后,最后两个词的分隔符失效
str += " ";
String result;
try {
	result = PinyinHelper.toHanYuPinyinString(str, format, separator, true);
} catch (BadHanyuPinyinOutputFormatCombination e) {
	throw new PinyinException(e);
}

return result.substring(0, result.length()-1);

我已经修复了内部逻辑,https://github.com/wnjustdoit/pinyin4j/blob/master/src/test/java/net/sourceforge/pinyin4j/test/NewPinyinHelperTest.java

wnjustdoit avatar Jun 16 '20 03:06 wnjustdoit

我也被这个bug坑到了,原因是插入分隔符的时候逻辑判断有问题,多个汉字最后两个汉字的分隔符没有插入导致的。 hutool的解决办法是:

// 添加一个后缀是为了解决Pinyin4j的bug,在指定分隔符后,最后两个词的分隔符失效
str += " ";
String result;
try {
	result = PinyinHelper.toHanYuPinyinString(str, format, separator, true);
} catch (BadHanyuPinyinOutputFormatCombination e) {
	throw new PinyinException(e);
}

return result.substring(0, result.length()-1);

我已经修复了内部逻辑,https://github.com/wnjustdoit/pinyin4j/blob/master/src/test/java/net/sourceforge/pinyin4j/test/NewPinyinHelperTest.java

没有提交maven中央库,用户没法用哎。

looly avatar Jun 18 '20 00:06 looly

我也被这个bug坑到了,原因是插入分隔符的时候逻辑判断有问题,多个汉字最后两个汉字的分隔符没有插入导致的。 hutool的解决办法是:

// 添加一个后缀是为了解决Pinyin4j的bug,在指定分隔符后,最后两个词的分隔符失效
str += " ";
String result;
try {
	result = PinyinHelper.toHanYuPinyinString(str, format, separator, true);
} catch (BadHanyuPinyinOutputFormatCombination e) {
	throw new PinyinException(e);
}

return result.substring(0, result.length()-1);

我已经修复了内部逻辑,https://github.com/wnjustdoit/pinyin4j/blob/master/src/test/java/net/sourceforge/pinyin4j/test/NewPinyinHelperTest.java

没有提交maven中央库,用户没法用哎。

<dependency>
  <groupId>io.github.wnjustdoit</groupId>
  <artifactId>pinyin4j</artifactId>
  <version>2.6.0</version>
</dependency>

wnjustdoit avatar Jun 20 '20 03:06 wnjustdoit