123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236 |
- /*******************************************************************
- * Copyright(c) 2019 DefaultCompany
- * All rights reserved.
- *
- * 文件名称: NewBehaviourScript.cs
- * 简要描述:
- *
- * 创建日期: 2019/08/09 14:07:07
- * 作者: SilenceT
- * 说明:
- ******************************************************************/
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- using UnityEngine.UIElements;
- public class LUtilitys : MonoBehaviour
- {
- /// <summary>
- /// 解析Vector3
- /// </summary>
- /// <param name="val"></param>
- /// <param name="separator">分隔符</param>
- /// <returns></returns>
- public static Vector3 ParseVector3(string val, char separator = '/')
- {
- if (val.Contains("(")) val.Replace("(", "");
- if (val.Contains(")")) val.Replace(")", "");
- if (string.IsNullOrEmpty(val) || val == "0")
- return Vector3.zero;
- val = val.Replace("(", string.Empty).Replace(")", string.Empty);
- string[] xyz = val.Split(separator);
- if (xyz.Length < 3) return Vector3.zero;
- float x = (float)System.Convert.ChangeType(xyz[0], typeof(float));
- float y = (float)System.Convert.ChangeType(xyz[1], typeof(float));
- float z = (float)System.Convert.ChangeType(xyz[2], typeof(float));
- return new Vector3(x, y, z);
- }
- /// <summary>
- /// Vector3转成字符串
- /// </summary>
- /// <param name="val"></param>
- /// <param name="separator">分隔符</param>
- /// <returns></returns>
- public static string ParseString(Vector3 vector3)
- {
- return vector3.x.ToString() + "/" + vector3.y.ToString() + "/" + vector3.z.ToString();
- }
-
- /// <summary>
- /// 将数字转换为中文数字
- /// </summary>
- /// <param name="number">阿拉伯数字</param>
- /// <returns>转换完成后的中文数字(目前只支持到20)</returns>
- public static string DigitalToChinese(int arabicNumerals)
- {
- string tmpStr = string.Empty;
- if (arabicNumerals <= 10 && arabicNumerals >= 0)
- {
- tmpStr = NumberChineseMatch(arabicNumerals);
- }
- else if (arabicNumerals < 100 && arabicNumerals > 10)
- {
- char[] tmpArray = arabicNumerals.ToString().ToCharArray();
- tmpStr = int.Parse(tmpArray[0].ToString()) == 1
- ? "十" + NumberChineseMatch(int.Parse(tmpArray[1].ToString()))
- : NumberChineseMatch(int.Parse(tmpArray[0].ToString())) + "十" + (int.Parse(tmpArray[1].ToString()) == 0
- ? ""
- : NumberChineseMatch(int.Parse(tmpArray[1].ToString())));
- }
- return tmpStr;
- }
- /// <summary>
- /// 阿拉伯数字和向中文转换匹配
- /// </summary>
- /// <param name="number"></param>
- /// <returns></returns>
- private static string NumberChineseMatch(int number)
- {
- string tmpStr = string.Empty;
-
- switch (number)
- {
- case 0:
- tmpStr = "零";
- break;
- case 1:
- tmpStr = "一";
- break;
- case 2:
- tmpStr = "二";
- break;
- case 3:
- tmpStr = "三";
- break;
- case 4:
- tmpStr = "四";
- break;
- case 5:
- tmpStr = "五";
- break;
- case 6:
- tmpStr = "六";
- break;
- case 7:
- tmpStr = "七";
- break;
- case 8:
- tmpStr = "八";
- break;
- case 9:
- tmpStr = "九";
- break;
- case 10:
- tmpStr = "十";
- break;
- default:
- break;
- }
- return tmpStr;
- }
- //数字1-9转换为中文数字
- public string OneBitNumberToChinese(string num)
- {
- string numStr = "123456789";
- string chineseStr = "一二三四五六七八九";
- string result = "";
- int numIndex = numStr.IndexOf(num);
- if (numIndex > -1)
- {
- result = chineseStr.Substring(numIndex, 1);
- }
- return result;
- }
- //数字1-9转换为中文数字
- public string OneBitNumberToChinese(int num)
- {
- return OneBitNumberToChinese(num.ToString());
- }
- //阿拉伯数字转换为中文数字(1-99999)递归实现
- public string NumberToChineseByRecursion(int num)
- {
- string strNum = num.ToString();
- string result = "";
- if (strNum.Length == 1)
- {//个
- result += OneBitNumberToChinese(num);
- return result;
- }
- else if (strNum.Length == 2)
- {// 十
- if (strNum.Substring(0, 1) == "1") result += "十";
- else result += (OneBitNumberToChinese(num / 10) + "十");
- result += NumberToChinese(num % 10);
- }
- else if (strNum.Length == 3)
- {// 百
- result += (OneBitNumberToChinese(num / 100) + "百");
- if ((num % 100).ToString().Length < 2 && num % 100 != 0) result += "零";
- result += NumberToChinese(num % 100);
- }
- else if (strNum.Length == 4)
- {// 千
- result += (OneBitNumberToChinese(num / 1000) + "千");
- if ((num % 1000).ToString().Length < 3 && num % 1000 != 0) result += "零";
- result += NumberToChinese(num % 1000);
- }
- else if (strNum.Length == 5)
- {// 万
- result += (OneBitNumberToChinese(num / 10000) + "万");
- if ((num % 10000).ToString().Length < 4 && num % 10000 != 0) result += "零";
- result += NumberToChinese(num % 10000);
- }
- return result;
- }
- //阿拉伯数字转换为中文数字(0-99999)
- public string NumberToChinese(int num)
- {
- string strNum = num.ToString();
- string result = "";
- if (strNum.Length == 5)
- {//万
- result += OneBitNumberToChinese(strNum.Substring(0, 1)) + "万";
- strNum = strNum.Substring(1);
- }
- if (strNum.Length == 4)
- {//千
- string secondBitNumber = strNum.Substring(0, 1);
- if (secondBitNumber == "0") result += "零";
- else result += OneBitNumberToChinese(secondBitNumber) + "千";
- strNum = strNum.Substring(1);
- }
- if (strNum.Length == 3)
- {//百
- string hundredBitNumber = strNum.Substring(0, 1);
- if (hundredBitNumber == "0" && result.Substring(result.Length - 1) != "零") result += "零";
- else result += OneBitNumberToChinese(hundredBitNumber) + "百";
- strNum = strNum.Substring(1);
- }
- if (strNum.Length == 2)
- {//十
- string hundredBitNumber = strNum.Substring(0, 1);
- if (hundredBitNumber == "0" && result.Substring(result.Length - 1) != "零") result += "零";
- else if (hundredBitNumber == "1" && string.IsNullOrEmpty(result)) result += "十";//10->十
- else result += OneBitNumberToChinese(hundredBitNumber) + "十";
- strNum = strNum.Substring(1);
- }
- if (strNum.Length == 1)
- {//个
- if (strNum == "0") result += "零";
- else result += OneBitNumberToChinese(strNum);
- }
- //100->一百零零
- if (!string.IsNullOrEmpty(result) && result != "零") result = result.TrimEnd('零');
- return result;
- }
- }
|