toPinyin.js 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. /*
  2. * @Autor: lieft@qq.com
  3. * @Date: 1970-01-01 08:00:00
  4. * @LastEditors: hlb
  5. * @LastEditTime: 2020-11-25 17:48:41
  6. * @description: 转拼音
  7. */
  8. import pinyin from "./pinyin";
  9. class ToPinyin {
  10. static instance;
  11. constructor() {
  12. }
  13. static getInstance() {
  14. if (!this.instance) {
  15. this.instance = new ToPinyin();
  16. }
  17. return this.instance;
  18. }
  19. // 转首字母 this.chineseToInitials(this.chineseToPinYin('你好')) this.chineseToInitials('NiHao')
  20. chineseToInitials(word){
  21. let SX = '';
  22. for (var i = 0; i < word.length; i++) {
  23. var c = word.charAt(i);
  24. if (/^[A-Z]+$/.test(c)) {
  25. SX += c;
  26. }
  27. }
  28. return SX
  29. }
  30. // 转拼音
  31. chineseToPinYin(l1) {
  32. var l2 = l1.length;
  33. var I1 = '';
  34. var reg = new RegExp('[a-zA-Z0-9]');
  35. for (var i = 0; i < l2; i++) {
  36. var val = l1.substr(i, 1);
  37. var name = this.arraySearch(val, pinyin);
  38. if (reg.test(val)) {
  39. I1 += val.toLocaleUpperCase();
  40. } else if (name !== false) {
  41. I1 += name;
  42. }
  43. }
  44. I1 = I1.replace(/ /g, '-');
  45. while (I1.indexOf('--') > 0) {
  46. I1 = I1.replace('--', '-');
  47. }
  48. return I1;
  49. }
  50. arraySearch(l1, l2) {
  51. for (var name in pinyin) {
  52. if (pinyin[name].indexOf(l1) !== -1) {
  53. return this.ucfirst(name);
  54. }
  55. }
  56. return false;
  57. }
  58. ucfirst(l1) {
  59. if (l1.length > 0) {
  60. var first = l1.substr(0, 1).toUpperCase();
  61. var spare = l1.substr(1, l1.length);
  62. return first + spare;
  63. }
  64. }
  65. }
  66. const toPinyin = ToPinyin.getInstance()
  67. export default toPinyin;