using System.Collections.Generic;
using UnityEngine;
using System.Text.RegularExpressions;
using System.Text;
namespace GameLogic
{
public static class UITool
{
private static int hours;
private static int minutes;
private static int seconds;
public static string TextName(string value)
{
if (value.Length > 6)
{
value = value.Substring(0, 6);
value += "...";
}
return value;
}
///
/// 数值转换
///
///
///
public static string ConvertToString(int number)
{
//如果数字小于10000,直接返回原始数字
if (number < 10000)
{
return number.ToString();
}
else if (number < 100000000)
{
//将数字除以10000并将格式化为字符串
float convertedValue = (float)number / 10000;
return string.Format("{0}万", convertedValue.ToString("F1"));
}
else
{
//将数字除以100000000并将格式化为字符串
float convertedValue = (float)number / 100000000;
return string.Format("{0}亿", convertedValue.ToString("F1"));
}
}
///
/// 数值转换
///
///
///
public static string ConvertToString(long number)
{
//应该没有负数要求转换的吧....
if (number <= 0)
{
return "0";
}
//如果数字小于10000,直接返回原始数字
if (number < 10000)
{
return number.ToString();
}
else if (number < 100000000)
{
//将数字除以10000并将格式化为字符串
float convertedValue = (float)number / 10000;
return string.Format("{0}万", convertedValue.ToString("F1"));
}
else
{
//将数字除以100000000并将格式化为字符串
float convertedValue = (float)number / 100000000;
return string.Format("{0}亿", convertedValue.ToString("F1"));
}
}
public static Color ColorFromString(string colorStr)
{
if (ColorUtility.TryParseHtmlString(colorStr, out Color color))
{
return color;
}
else
{
Debug.LogWarning("Invalid color string: " + colorStr);
return Color.white; // 默认颜色
}
}
///
/// 转换时间
///
public static string ConvertNumToTime(long number)
{
hours = (int)(number / 3600);
minutes = (int)((number % 3600) / 60);
seconds = (int)(number % 60);
return string.Format("{0:D2}:{1:D2}:{2:D2}", hours, minutes, seconds);
}
///
/// 转换时间
///
public static string ConvertNumToTime(int number)
{
hours = (int)(number / 3600);
minutes = (int)((number % 3600) / 60);
seconds = (int)(number % 60);
return string.Format("{0:D2}:{1:D2}:{2:D2}", hours, minutes, seconds);
}
public static string ConvertNumToMinute(int number)
{
minutes = (int)(number / 60);
seconds = (int)(number % 60);
return string.Format("{0:D2}:{1:D2}", minutes, seconds);
}
public static Dictionary conver_map = new Dictionary(1000);
///
/// 名字转化为最多显示六个字加。。。
///
///
///
public static string ConvertName(string str)
{
if (string.IsNullOrEmpty(str))
{
return str;
}
// 使用正则表达式去除不可显示的字符
str = Regex.Replace(str, @"\p{C}+", "");
if (str.Length > 6)
{
if (conver_map.TryGetValue(str, out var v))
{
return v;
}
else
{
string currName = str.Substring(0, 6) + "...";
conver_map[str] = currName;
return currName;
}
}
else
{
return str;
}
}
public static Dictionary _ConvertName2_dct = new Dictionary();
///
/// 名字转化为竖排,并且最多显示4个字加。。。
///
///
///
public static string ConvertName2(string str)
{
if (string.IsNullOrEmpty(str))
{
return str;
}
if (_ConvertName2_dct.TryGetValue(str, out var v))
{
return v;
}
string currName = string.Empty;
if (str.Length > 4 && str != null)
{
currName = str.Substring(0, 4) + "...";
}
else
{
currName = str;
}
string s2 = string.Empty;
for (int i = 0; i < currName.Length; i++)
{
if (i >= 4)
{
s2 += currName[i];
}
else
{
s2 += currName[i] + "\n";
}
}
_ConvertName2_dct[str] = s2;
return s2;
}
///
/// 检查并移除字体不支持的字符
///
/// 需要检查的字符串
/// 使用的字体
/// 替换字符,默认为空
/// 处理后的字符串
public static string RemoveUnsupportedChars(string input, TMPro.TMP_FontAsset font, char replacementChar = '\0')
{
if (string.IsNullOrEmpty(input) || font == null)
{
return input;
}
StringBuilder result = new StringBuilder();
foreach (char c in input)
{
if (font.HasCharacter(c))
{
result.Append(c);
}
else if (replacementChar != '\0')
{
result.Append(replacementChar);
}
}
return result.ToString();
}
///
/// 检查并移除字体不支持的字符
///
/// 需要检查的字符串
/// 使用的字体
/// 替换字符,默认为空
/// 处理后的字符串
public static string RemoveUnsupportedChars(string input, Font font, char replacementChar = '\0')
{
if (string.IsNullOrEmpty(input) || font == null)
{
return input;
}
StringBuilder result = new StringBuilder();
foreach (char c in input)
{
if (font.HasCharacter(c))
{
result.Append(c);
}
else if (replacementChar != '\0')
{
result.Append(replacementChar);
}
}
return result.ToString();
}
///
/// 检查字符串中是否包含字体不支持的字符
///
/// 需要检查的字符串
/// 使用的字体
/// 是否包含不支持的字符
public static bool ContainsUnsupportedChars(string input, TMPro.TMP_FontAsset font)
{
if (string.IsNullOrEmpty(input) || font == null)
{
return false;
}
foreach (char c in input)
{
if (!font.HasCharacter(c))
{
return true;
}
}
return false;
}
}
}