文档库 最新最全的文档下载
当前位置:文档库 › 获取文件名和类型的方法

获取文件名和类型的方法


using System;
using System.Collections.Generic;
using System.Text;

namespace 星空个性化助手
{
class Util
{
/*-----------------------------------------------------
* 文件夹路径的格式为
* C:\Program Files\Common
* 最后是不加\号的
-----------------------------------------------------*/

///


///
///

/// 带文件名和后缀的全路径
/// 返回文件路径
/// 返回不带反缀名的文件名
/// 返回带.的后缀名
internal static void GetFile( string fileAllName , out string filePath , out string fileName , out string fileType )//得到全部
{
filePath = fileAllName.Substring (0 , https://www.wendangku.net/doc/9f4121629.html,stIndexOf ('\\')) + "\\";//在私有变量里存储源文件路径
fileName = fileAllName.Substring (https://www.wendangku.net/doc/9f4121629.html,stIndexOf ('\\') + 1 , https://www.wendangku.net/doc/9f4121629.html,stIndexOf ('.') - https://www.wendangku.net/doc/9f4121629.html,stIndexOf ('\\') - 1);//在私有变量里存储源文件名
fileType = fileAllName.Substring (https://www.wendangku.net/doc/9f4121629.html,stIndexOf ('.'));//在私有变量里存储源文件类型
}

///
///
///

/// 带文件名和后缀的全路径
/// 返回不带反缀名的文件名
internal static void GetName( string fileAllName , out string fileName )//得到文件名
{
fileName = fileAllName.Substring (https://www.wendangku.net/doc/9f4121629.html,stIndexOf ('\\') + 1 , https://www.wendangku.net/doc/9f4121629.html,stIndexOf ('.') - https://www.wendangku.net/doc/9f4121629.html,stIndexOf ('\\') - 1);//在私有变量里存储源文件名
}

///
///
///

/// 带文件名和后缀的全路径
///
internal static string GetName( string fileAllName )//得到文件名
{
return fileAllName.Substring (https://www.wendangku.net/doc/9f4121629.html,stIndexOf ('\\') + 1 , https://www.wendangku.net/doc/9f4121629.html,stIndexOf ('.') - https://www.wendangku.net/doc/9f4121629.html,stIndexOf ('\\') - 1);//在私有变量里存储源文件名
}

///
///
///

/// 带文件名和后缀的全路径
/// 返回带.的后缀名
internal static void GetType( string fileAllName , out string fileType )//得到文件类型
{
fileType = fileAllName.Substring (https://www.wendangku.net/doc/9f4121629.html,stIndexOf ('.'));//在私有变量里存储源文件类型
}


///
///
///

/// 带文件名和后缀的全路径
///
internal static string GetType(

string fileAllName )//得到文件类型
{
return fileAllName.Substring (https://www.wendangku.net/doc/9f4121629.html,stIndexOf ('.'));//在私有变量里存储源文件类型
}


///


///
///

/// 带文件名和后缀的全路径
/// 返回文件路径
internal static void GetPath( string fileAllName , out string filePath )//得到文件路径
{
filePath = fileAllName.Substring (0 , https://www.wendangku.net/doc/9f4121629.html,stIndexOf ('\\')) + "\\";//在私有变量里存储源文件路径
}



///
/// 得到文件路径
///

/// 带文件名和后缀的全路径
/// 文件路径
internal static string GetPath( string fileAllName )//得到文件路径
{
return fileAllName.Substring (0 , https://www.wendangku.net/doc/9f4121629.html,stIndexOf ('\\')) + "\\";//在私有变量里存储源文件路径
}



///
/// 得到文件名和类型
///

/// 带文件名和后缀的全路径
/// 返回不带反缀名的文件名
/// 返回带.的后缀名
internal static void GetNameAndType( string fileAllName , out string fileName , out string fileType )//得到文件名和类型
{
fileName = fileAllName.Substring (https://www.wendangku.net/doc/9f4121629.html,stIndexOf ('\\') + 1 , https://www.wendangku.net/doc/9f4121629.html,stIndexOf ('.') - https://www.wendangku.net/doc/9f4121629.html,stIndexOf ('\\') - 1);//在私有变量里存储源文件名
fileType = fileAllName.Substring (https://www.wendangku.net/doc/9f4121629.html,stIndexOf ('.'));//在私有变量里存储源文件类型
}


///
/// 得到目录名
///

/// 目录总路径
/// 返回目录名
internal static string GetDirectoryName( string directory )//得到目录名
{
string outDirectory;
if( directory.Length - 1 == https://www.wendangku.net/doc/9f4121629.html,stIndexOf ('\\') )//如果是根目录
{
outDirectory = directory.Substring (0 , https://www.wendangku.net/doc/9f4121629.html,stIndexOf (":")) + "盘";//如果是D盘,则返回D
}
else
{
outDirectory = directory.Substring (https://www.wendangku.net/doc/9f4121629.html,stIndexOf ('\\') + 1);//在私有变量里存储源文件名
}
return outDirectory;
}




///
///思路非常简单,且没有任何位数限制!
///例如: 401,0103,1013
///读作: 肆佰零壹[亿]零壹佰零叁[万]壹仟零壹拾叁
///咱们先按每四位一组 从左到右,高位到低位分别"大声朗读"一下:
///"肆佰零壹" 单位是: "[

亿]"
///"壹佰零叁" 单位是: "[万]"
///"壹仟零壹拾叁" 单位是 "" (相当于没有单位)
///很容易发现,每四位: 只有 千位,百位,十位,个位 这四种情况!
///我们把 [万],[亿] 当作单位就可以了!
///这就是规律了!简单吧!
///依据该思路,只用区区不到 50 行代码就可以搞定:
///只要你能够提供足够多的"单位"
///任何天文数字都可以正确转换!
///


/// 阿拉伯数字
/// 返回格式化好的字符串
internal static string ConvertNumberToChinese( string num )
{
//数字 数组
string[] cnNum = new string[] { "零" , "一" , "二" , "三" , "四" , "五" , "六" , "七" , "八" , "九" };
//位 数组
string[] cnSBQ = new string[] { "" , "拾" , "佰" , "仟" };
//单位 数组
string[] cnWY = new string[] { "" , "[万]" , "[亿]" , "[万亿]" };
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;
}

///


/// 数字转中文
///

/// 数字
/// 中文或其它语言的数组(如:one,two,three,four。。。)
/// 十百千数组(原理同上)
/// 万、亿数组(这样就支持任何语言了。例:萬、億)
/// 返回格式化好的字符串
internal 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;
}
}
}




相关文档
相关文档 最新文档