using System;
using System.Collections.Generic;
using System.IO;
using System.Text.RegularExpressions;
namespace 特殊字符转译
{
public class StringOperate
{
/// <summary>
/// 判断字符串中是否包含非法字符
/// </summary>
/// <param name="strInput"></param>
/// <returns></returns>
public static bool HasInvalidChars(string strInput)
{
if (strInput.IndexOfAny(Path.GetInvalidFileNameChars()) != -1)
{
return true;
}
else
return false;
}
/// <summary>
/// 获取字符串的单字符长度
/// </summary>
/// <param name="strInput"></param>
/// <returns></returns>
public static int GetSingleCharCount(string strInput)
{
int count = 0;
try
{
Regex regex = new Regex("^[\u4E00-\u9FA5]{0,}$");
List<string> allChrs = new List<string>();
char[] array = strInput.ToCharArray();
for (int i = 0; i < array.Length; i++)
{
allChrs.Add(array[i].ToString());
}
for (int i = 0; i < allChrs.Count; i++)
{
count += 1;
if (regex.IsMatch(allChrs[i],0))
{
count += 1;
}
}
return count;
}
catch (System.Exception ex)
{
return count;
}
}
/// <summary>
/// 将文件路径中的非法字符转全角(不是非法字符不转译)
/// </summary>
/// <param name="strInput"></param>
/// <returns></returns>
public static string InvalidPathToSBC(string strPath)
{
string reVal = string.Empty;
try
{
List<string> allChrs = new List<string>();
char[] array = strPath.ToCharArray();
for (int i = 0; i < array.Length; i++)
{
allChrs.Add(array[i].ToString());
}
for (int i = 0; i < allChrs.Count; i++)
{
if (allChrs[i].IndexOfAny(Path.GetInvalidFileNameChars()) >= 0)
{
allChrs[i] = ToSBC(allChrs[i]);
}
reVal += allChrs[i];
}
return reVal;
}
catch (System.Exception ex)
{
return reVal;
}
}
/// <summary>
/// 将文件名称中的非法字符转全角(不是非法字符不转译)
/// </summary>
/// <param name="strInput"></param>
/// <returns></returns>
public static string InvalidFileNameToSBC(string strInput)
{
string reVal = string.Empty;
try
{
List<string> allChrs = new List<string>();
char[] array = strInput.ToCharArray();
for (int i = 0; i < array.Length; i++)
{
allChrs.Add(array[i].ToString());
}
for (int i = 0; i < allChrs.Count; i++)
{
if (allChrs[i].IndexOfAny(Path.GetInvalidFileNameChars()) >= 0)
{
allChrs[i] = ToSBC(allChrs[i]);
}
reVal += allChrs[i];
}
return reVal;
}
catch (System.Exception ex)
{
return reVal;
}
}
/// <summary>
///字符转全角
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
public static string ToSBC(string input)
{
char[] array = input.ToCharArray();
for (int i = 0; i < array.Length; i++)
{
if (array[i] == 32)
{
array[i] = (char)12288;
continue;
}
if (array[i] < 127)
{
array[i] = (char)(array[i] + 65248);
}
}
return new string(array);
}
/// <summary>
/// 字符转半角
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
public static string ToDBC(string input)
{
char[] array = input.ToCharArray();
for (int i = 0; i < array.Length; i++)
{
if (array[i] == 12288)
{
array[i] = (char)32;
continue;
}
if (array[i] > 65280 && array[i] < 65375)
{
array[i] = (char)(array[i] - 65248);
}
}
return new string(array);
}
}
}
C# 非法字符转译
最新推荐文章于 2024-05-06 22:01:59 发布