using System; using System.Collections.Generic; using System.Text; namespace Apewer.Internals { internal class TextGenerator { /// 生成新的 GUID。 public static string NewGuid(bool argHyphenation = false, bool argLowerCase = true) { var vguid = Guid.NewGuid().ToString(); if (argLowerCase) vguid = vguid.ToLower(); else vguid = vguid.ToUpper(); if (!argHyphenation) vguid = vguid.Replace("-", ""); return vguid; } /// 合并字符串。 public static string Merge(IEnumerable argStrings) { if (argStrings == null) return ""; var vsb = new StringBuilder(); foreach (var vstring in argStrings) { if (string.IsNullOrEmpty(vstring)) continue; vsb.Append(vstring); } return vsb.ToString(); } /// 合并字符串。 public static string Merge(params string[] argStrings) { if (argStrings == null) return ""; var vsb = new StringBuilder(); foreach (var vstring in argStrings) { if (string.IsNullOrEmpty(vstring)) continue; vsb.Append(vstring); } return vsb.ToString(); } /// 合并字符串。 public static string Merge(IEnumerable argChars) { if (argChars == null) return ""; var vsb = new StringBuilder(); foreach (var vchar in argChars) { vsb.Append(vchar.ToString()); } return vsb.ToString(); } /// 合并字符串。 public static string Merge(params char[] argChars) { if (argChars == null) return ""; var vsb = new StringBuilder(); foreach (var vchar in argChars) { vsb.Append(vchar.ToString()); } return vsb.ToString(); } private static int Asc(char argChar) { int num = Convert.ToInt32(argChar); if (num < 128) return num; int result = 0; try { Encoding fileIOEncoding = Encoding.Default; char[] chars = new char[] { argChar }; if (fileIOEncoding.IsSingleByte) { byte[] array = new byte[1]; int bytes = fileIOEncoding.GetBytes(chars, 0, 1, array, 0); result = (int)array[0]; } else { byte[] array = new byte[2]; int bytes = fileIOEncoding.GetBytes(chars, 0, 1, array, 0); if (bytes == 1) { result = (int)array[0]; } else { if (BitConverter.IsLittleEndian) { byte b = array[0]; array[0] = array[1]; array[1] = b; } result = (int)BitConverter.ToInt16(array, 0); } } } catch { } return result; } /// 按字符编码获取字符。 public static char Chr(int argCode) { if (argCode < -32768 || argCode > 65535) return ' '; if (argCode >= 0 && argCode <= 127) return Convert.ToChar(argCode); checked { char result; try { Encoding encoding = Encoding.Default; if (encoding.IsSingleByte && (argCode < 0 || argCode > 255)) { return ' '; } char[] array = new char[2]; byte[] array2 = new byte[2]; Decoder decoder = encoding.GetDecoder(); if (argCode >= 0 && argCode <= 255) { array2[0] = (byte)(argCode & 255); int chars = decoder.GetChars(array2, 0, 1, array, 0); } else { array2[0] = (byte)((argCode & 65280) >> 8); array2[1] = (byte)(argCode & 255); int chars = decoder.GetChars(array2, 0, 2, array, 0); } result = array[0]; } catch { return ' '; } return result; } } /// 获取 ASCII 字符。 /// ASCII 值。 public static string Ascii(int argCode) { try { return Chr(argCode).ToString(); } catch { return ""; } } /// 获取范围内 ASCII 值连续的字符。 /// 范围起始 ASCII 值。 /// 范围结束 ASCII 值。 public static string Ascii(int argBegin, int argEnd) { try { int vb = argBegin; int ve = argEnd; if (vb == ve) return Ascii(vb); else { var vr = new TextBuilder(); if (vb < ve) { for (int i = vb; i <= ve; i++) vr.Append(Ascii(i)); } else { for (int i = vb; i >= ve; i--) vr.Append(Ascii(i)); } return vr.Value; } } catch { return ""; } } /// 重复指定子字符串,直到达到指定长度。 /// 子字符串。 /// 目标字符串的长度。 public static string CopyChar(string argCell, int argLength) { if (argLength > 0) { var vcell = string.IsNullOrEmpty(argCell) ? " " : argCell; var vtext = new TextBuilder(); while (vtext.Length < argLength) vtext.Append(vcell); var vresult = vtext.Value; if (vresult.Length > argLength) vresult = vresult.Substring(0, argLength); return vresult; } return ""; } /// 获取指定长的的空格。 public static string Space(int argLength) { return CopyChar(" ", argLength); } /// 获取首字母大写的拼音。 private static string GetHeadLetterByString(string argText) { string tempStr = ""; foreach (char vchar in argText) { if ((int)vchar >= 33 && (int)vchar <= 126) {//字母和符号原样保留 tempStr += vchar.ToString(); } else {//累加拼音声母 tempStr += GetHeadLetterByChar(vchar.ToString()); } } return tempStr; } /// 取单个字符的拼音声母 /// 要转换的单个汉字 /// 拼音首字母 public static string GetHeadLetterByChar(string argChar) { byte[] array = new byte[2]; array = Encoding.Default.GetBytes(argChar); int i = (short)(array[0] - '\0') * 256 + ((short)(array[1] - '\0')); if (i < 0xB0A1) return "*"; if (i < 0xB0C5) return "a"; if (i < 0xB2C1) return "b"; if (i < 0xB4EE) return "c"; if (i < 0xB6EA) return "d"; if (i < 0xB7A2) return "e"; if (i < 0xB8C1) return "f"; if (i < 0xB9FE) return "g"; if (i < 0xBBF7) return "h"; if (i < 0xBFA6) return "j"; if (i < 0xC0AC) return "k"; if (i < 0xC2E8) return "l"; if (i < 0xC4C3) return "m"; if (i < 0xC5B6) return "n"; if (i < 0xC5BE) return "o"; if (i < 0xC6DA) return "p"; if (i < 0xC8BB) return "q"; if (i < 0xC8F6) return "r"; if (i < 0xCBFA) return "s"; if (i < 0xCDDA) return "t"; if (i < 0xCEF4) return "w"; if (i < 0xD1B9) return "x"; if (i < 0xD4D1) return "y"; if (i < 0xD7FA) return "z"; return "*"; } } }