示例#1
0
        /// <summary>
        /// 用于StringHelper类从字符串中挑选符合条件的数字、字母、中文、全角字符, 选项可以叠加使用,如  StringFilterOptions.HoldLetter|StringFilterOptions.HoldNumber 表示从字符串中选取字母和数字
        /// </summary>
        /// <param name="str"></param>
        /// <param name="options"></param>
        /// <returns></returns>
        public static string FilterInvalidChar(string str, StringFilterOptions options)
        {
            if (string.IsNullOrEmpty(str))
            {
                return(string.Empty);
            }
            StringBuilder builder = new StringBuilder(str.Length);

            for (int i = 0; i < str.Length; i++)
            {
                int num2 = str[i];
                if (((num2 >= 0x30) && (num2 <= 0x39)) && ((StringFilterOptions.HoldNumber & options) == StringFilterOptions.HoldNumber))
                {
                    builder.Append(str[i]);
                }
                else if ((((num2 >= 0x41) && (num2 <= 90)) || ((num2 >= 0x61) && (num2 <= 0x7a))) && ((StringFilterOptions.HoldLetter & options) == StringFilterOptions.HoldLetter))
                {
                    builder.Append(str[i]);
                }
                else if (((num2 >= 0x4e00) && (num2 <= 0x9fa5)) && ((StringFilterOptions.HoldChinese & options) == StringFilterOptions.HoldChinese))
                {
                    builder.Append(str[i]);
                }
                else if (((((num2 >= 0xff10) && (num2 <= 0xff19)) || ((num2 >= 0xff21) && (num2 <= 0xff3a))) || ((num2 >= 0xff41) && (num2 <= 0xff5a))) && ((StringFilterOptions.SBCToDBC & options) == StringFilterOptions.SBCToDBC))
                {
                    builder.Append((char)(num2 - 0xfee0));
                }
            }
            return(builder.ToString());
        }
示例#2
0
        /// <summary>
        /// 得到输入字符串哈希值的长度
        /// </summary>
        /// <param name="input"></param>
        /// <param name="options"></param>
        /// <returns></returns>
        public static decimal GetHashKey(string input, StringFilterOptions options)
        {
            ulong num;

            if (string.IsNullOrEmpty(input))
            {
                return(0M);
            }
            input = FilterInvalidChar(input, options);
            var data      = Encoding.UTF8.GetBytes(input);
            var encryData = Md5.Encrypt(data);

            num = BitConverter.ToUInt64(encryData, 4);
            return(DataConverter.CDecimal(num));
        }
示例#3
0
		private static object AlterParameters(StringFilterOptions operation, object parameters)
		{
			if (operation == StringFilterOptions.StripTags)
			{
				// Convert the given tags to the format expected by strip_tags
				PhpArray tags = (parameters as PhpArray);
				if (tags != null)
				{
					StringBuilder sb = new StringBuilder();
					foreach (object o in tags)
					{
						sb.Append('<');
						sb.Append(Core.Convert.ObjectToString(o));
						sb.Append('>');
					}
					return sb.ToString();
				}
				else
				{
					// The allowable_tags is expected to be a string
					return Core.Convert.ObjectToString(parameters);
				}
			}

			return parameters;
		}
示例#4
0
		/// <summary>Creates a new instance of this filter with additional parameters.</summary>
		public StringFilter(StringFilterOptions operation, object parameters)
			: base(AlterParameters(operation, parameters))
		{
			this.operation = operation;
		}