/*******************************************************************
* 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
{
///
/// 解析Vector3
///
///
/// 分隔符
///
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);
}
///
/// Vector3转成字符串
///
///
/// 分隔符
///
public static string ParseString(Vector3 vector3)
{
return vector3.x.ToString() + "/" + vector3.y.ToString() + "/" + vector3.z.ToString();
}
///
/// 将数字转换为中文数字
///
/// 阿拉伯数字
/// 转换完成后的中文数字(目前只支持到20)
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;
}
///
/// 阿拉伯数字和向中文转换匹配
///
///
///
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;
}
}