0 Star 1 Fork 0

神游/ShortCut

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
holysheng.Conver.cs 8.91 KB
一键复制 编辑 原始数据 按行查看 历史
神游 提交于 2021-01-11 23:04 . 初次版本
using System;
namespace holysheng.Conver
{
// 文件名字符串转换工具
public class ConverFileNameToString
{
/*-----------------------------------------------------
文件夹路径的格式为
C:\Program Files\Common
最后是不加\号的
-----------------------------------------------------*/
/// <summary>
/// 输入文件名全路径,返回转换后的文件路径字符串
/// </summary>
/// <param name="fileAllName">带文件名和后缀的全路径</param>
/// <param name="fileOnlyPath">返回文件路径</param>
/// <param name="fileOnlyName">返回不带反缀名的文件名</param>
/// <param name="fileOnlyType">返回带.的后缀名</param>
public static void GetFileStr(string fileAllName, out string fileOnlyPath, out string fileOnlyName, out string fileOnlyType)
{
fileOnlyPath = fileAllName.Substring(0, fileAllName.LastIndexOf('\\')) + "\\"; // 文件路径
fileOnlyName = fileAllName.Substring(fileAllName.LastIndexOf('\\') + 1, fileAllName.LastIndexOf('.') - fileAllName.LastIndexOf('\\') - 1); // 文件名
fileOnlyType = fileAllName.Substring(fileAllName.LastIndexOf('.')); // 文件类型
}
/// <summary>
/// 输入文件名全路径,得到文件名
/// </summary>
/// <param name="fileAllName">带文件名和后缀的全路径</param>
/// <param name="fileOnlyName">返回不带反缀名的文件名</param>
public static void GetFileOnlyName(string fileAllName, out string fileOnlyName)
{
fileOnlyName = fileAllName.Substring(fileAllName.LastIndexOf('\\') + 1, fileAllName.LastIndexOf('.') - fileAllName.LastIndexOf('\\') - 1); // 文件名
}
/// <summary>
/// 输入文件名全路径,得到文件名
/// </summary>
/// <param name="fileAllName">带文件名和后缀的全路径</param>
/// <returns>带扩展名的文件名</returns>
public static string GetFileOnlyName(string fileAllName)
{
return fileAllName.Substring(fileAllName.LastIndexOf('\\') + 1, fileAllName.LastIndexOf('.') - fileAllName.LastIndexOf('\\') - 1); // 文件名
}
/// <summary>
/// 输入文件名全路径,得到带.的后缀名
/// </summary>
/// <param name="fileAllName">带文件名和后缀的全路径</param>
/// <param name="fileOnlyType">返回带.的后缀名</param>
public static void GetFileOnlyType(string fileAllName, out string fileOnlyType)
{
fileOnlyType = fileAllName.Substring(fileAllName.LastIndexOf('.')); // 文件类型
}
/// <summary>
/// 输入文件名全路径,返回带.的后缀名
/// </summary>
/// <param name="fileAllName">带文件名和后缀的全路径</param>
/// <returns>带.的后缀名</returns>
public static string GetFileOnlyType(string fileAllName)
{
return fileAllName.Substring(fileAllName.LastIndexOf('.')); // 文件类型
}
/// <summary>
/// 输入文件名全路径,得到文件路径
/// </summary>
/// <param name="fileAllName">带文件名和后缀的全路径</param>
/// <param name="fileOnlyPath">返回文件路径</param>
public static void GetFileOnlyPath(string fileAllName, out string fileOnlyPath)
{
fileOnlyPath = fileAllName.Substring(0, fileAllName.LastIndexOf('\\')) + "\\"; // 文件路径
}
/// <summary>
/// 输入文件名全路径,得到文件路径
/// </summary>
/// <param name="fileAllName">带文件名和后缀的全路径</param>
/// <returns>文件路径</returns>
public static string GetFileOnlyPath(string fileAllName)
{
return fileAllName.Substring(0, fileAllName.LastIndexOf('\\')) + "\\"; // 文件路径
}
/// <summary>
/// 得到文件名和类型
/// </summary>
/// <param name="fileAllName">带文件名和后缀的全路径</param>
/// <param name="fileOnlyName">返回不带反缀名的文件名</param>
/// <param name="fileOnlyType">返回带.的后缀名</param>
public static void GetFileNameAndType(string fileAllName, out string fileOnlyName, out string fileOnlyType)//得到文件名和类型
{
fileOnlyName = fileAllName.Substring(fileAllName.LastIndexOf('\\') + 1, fileAllName.LastIndexOf('.') - fileAllName.LastIndexOf('\\') - 1); // 文件名
fileOnlyType = fileAllName.Substring(fileAllName.LastIndexOf('.')); // 文件类型
}
/// <summary>
/// 得到目录名
/// </summary>
/// <param name="directory">目录总路径</param>
/// <returns>返回目录名</returns>
public static string GetDirectoryName(string directory)
{
string outDirectory;
if (directory.Length - 1 == directory.LastIndexOf('\\')) // 如果是根目录
{
outDirectory = directory.Substring(0, directory.LastIndexOf(":")) + "盘";// 根目录,则返回 D盘
}
else
{
outDirectory = directory.Substring(directory.LastIndexOf('\\') + 1);// 返回D:/abc/cde
}
return outDirectory;
}
}
public class ConverToChinese
{
/// <summary>
/// 数字转中文
/// </summary>
/// <param name="num">数字</param>
/// <param name="cnNum">中文或其它语言的数组(如:one,two,three,four。。。)</param>
/// <param name="cnSBQ">十百千数组(原理同上)</param>
/// <param name="cnWY">万、亿数组(这样就支持任何语言了。例:萬、億)</param>
/// <returns>返回格式化好的字符串</returns>
public static string ConvertNumberToChinese(string num, string[] cnNum, string[] cnSBQ, string[] cnWY)
{
string sRetun = ""; // 返回值
int pos = 0; // 字符位置指针
int mo = num.Length % 4; // 取模
// 四位一组得到组数
int zuShu = (mo > 0 ? num.Length / 4 + 1 : num.Length / 4);
// 外层循环在所有组中循环
// 从左到右 高位到低位 四位一组 逐组处理
// 每组最后加上一个单位: "[万亿]","[亿]","[万]"
for (int i = zuShu; i > 0; i--)
{
int weiShu = 4;// 四位一组
if (i == zuShu && mo != 0)// 如果是最前面一组(最大的一组),并且模不等于0
{
weiShu = mo;// 最前面一组时,取模
}
// 得到一组四位数 最高位组有可能不足四位
string tempStrings = num.Substring(pos, weiShu);
int sLength = tempStrings.Length;
// 内层循环在该组中的每一位数上循环 从左到右 高位到低位
for (int j = 0; j < sLength; j++)
{
// 处理改组中的每一位数加上所在位: "仟","佰","拾",""(个)
int n = Convert.ToInt32(tempStrings.Substring(j, 1));
if (n == 0)
{
if (j < sLength - 1
&& Convert.ToInt32(tempStrings.Substring(j + 1, 1)) > 0
&& !sRetun.EndsWith(cnNum[n])) // 如果该0不是该组数字最后一位 并且 前一位大于0 并且 不是全部数字最后一位
{
sRetun += cnNum[n];
}
}
else
{
// 处理 1013 一千零"十三", 1113 一千一百"一十三"
if (!(n == 1 && (sRetun.EndsWith(cnNum[0]) | sRetun.Length == 0) && j == sLength - 2)) // 非(如果该数是1 且 是第一次运算 或者 返回数的长度为0) 且 该数是第二位
{
sRetun += cnNum[n];
}
sRetun += cnSBQ[sLength - j - 1];
}
}
pos += weiShu;
// 每组最后加上一个单位: [万],[亿] 等
if (i < zuShu) // 不是最高位的一组
{
if (Convert.ToInt32(tempStrings) != 0)
{
// 如果所有 4 位不全是 0 则加上单位 [万],[亿] 等
sRetun += cnWY[i - 1];
}
}
else
{
// 处理最高位的一组,最后必须加上单位
sRetun += cnWY[i - 1];
}
}
return sRetun;
}
}
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C#
1
https://gitee.com/holysheng/ShortCut.git
git@gitee.com:holysheng/ShortCut.git
holysheng
ShortCut
ShortCut
master

搜索帮助