示例#1
0
        /// <summary>
        /// 将字符 转换成 十六进制
        /// </summary>
        /// <param name="inChar"></param>
        /// <param name="needPrefix">是否加\x前缀</param>
        /// <returns></returns>
        public static string ConvertCharToHex(this char inChar, PrefixForCharToHex prefixForCharToHex = PrefixForCharToHex.None)
        {
            string hex = Convert.ToByte(inChar).ToString("x2");

            switch (prefixForCharToHex)
            {
            case PrefixForCharToHex.LuceneEscape:
                hex = @"symbolx" + hex;
                break;

            case PrefixForCharToHex.LuceneNormal:
                hex = @"symbolx" + hex;
                break;

            case PrefixForCharToHex.Escape:
                hex = @"\x" + hex;
                break;

            case PrefixForCharToHex.Normal:
                hex = @"0x" + hex;
                break;

            default:
                break;
            }
            return(hex);
        }
示例#2
0
        /// <summary>
        /// 将前缀的枚举类型转换成对应的正则表达式部分
        /// </summary>
        /// <param name="prefixForCharToHex"></param>
        /// <returns></returns>
        private static string PrefixForCharToHexForRegexPttnpartial(this PrefixForCharToHex prefixForCharToHex)
        {
            string retString = "";

            switch (prefixForCharToHex)
            {
            case PrefixForCharToHex.LuceneEscape:
                retString = @"symbolx";
                break;

            case PrefixForCharToHex.LuceneNormal:
                retString = @"symbolx";
                break;

            case PrefixForCharToHex.Escape:
                retString = @"\\x";
                break;

            case PrefixForCharToHex.Normal:
                retString = @"0x";
                break;

            default:
                break;
            }
            return(retString);
        }
示例#3
0
        /// <summary>
        /// 字符是否符合符号的格式
        /// </summary>
        /// <param name="inString"></param>
        /// <returns></returns>
        public static bool IsSymbolMark(this string inString, PrefixForCharToHex prefixForCharToHex = PrefixForCharToHex.LuceneEscape)
        {
            string retString = inString ?? "";

            string prefix = prefixForCharToHex.PrefixForCharToHexForRegexPttnpartial();

            string pttnSymbolMark = @"(?i)" + prefix + @"([\da-f]{2,})";

            return(System.Text.RegularExpressions.Regex.IsMatch(retString, pttnSymbolMark));
        }
示例#4
0
        /// <summary>
        /// 将十六进制的字符串转化成字符
        /// </summary>
        /// <param name="hexNumber"></param>
        /// <param name="prefixForCharToHex"></param>
        /// <returns></returns>
        public static char ConvertHexToChar(this string hexNumber, PrefixForCharToHex prefixForCharToHex = PrefixForCharToHex.LuceneEscape)
        {
            var hexString    = string.Empty;
            var isSymbolMark = hexNumber.IsSymbolMark(out hexString, prefixForCharToHex);

            if (isSymbolMark)
            {
                long result = 0;
                long.TryParse(hexString, System.Globalization.NumberStyles.HexNumber, null, out result);
                return((char)result);
            }
            return((char)0);
        }
示例#5
0
        /// <summary>
        /// 字符是否符合符号的格式
        /// </summary>
        /// <param name="inString"></param>
        /// <param name="hexNumber"></param>
        /// <returns></returns>
        public static bool IsSymbolMark(this string inString, out string hexNumber, PrefixForCharToHex prefixForCharToHex = PrefixForCharToHex.LuceneEscape)
        {
            hexNumber = string.Empty;

            string retString = inString ?? "";

            string prefix = prefixForCharToHex.PrefixForCharToHexForRegexPttnpartial();

            string pttnSymbolMark = @"(?i)" + prefix + @"(?<hex>[\da-f]{2,})";

            Match mHex = System.Text.RegularExpressions.Regex.Match(retString, pttnSymbolMark);

            if (mHex.Success)
            {
                hexNumber = mHex.Groups["hex"].Value;
            }

            return(mHex.Success);
        }