Пример #1
0
        /// <summary>
        /// 比较两个json结构是否相同
        /// </summary>
        /// <param name="json_1"></param>
        /// <param name="json_2"></param>
        /// <returns></returns>
        public static bool HasSameStructure(string json_1, string json_2)
        {
            var path_list = new List <string>();

            void FindJsonNode(JToken token)
            {
                if (token == null)
                {
                    return;
                }
                if (token.Type == JTokenType.Property)
                {
                    path_list.Add(token.Path);
                }
                //find next node
                var children = token.Children();

                foreach (var child in children)
                {
                    FindJsonNode(child);
                }
            }

            FindJsonNode(JToken.Parse(json_1));
            FindJsonNode(JToken.Parse(json_2));

            path_list = path_list.Select(x => ConvertHelper.GetString(x).Trim()).ToList();

            //这里其实有bug
            //如果一个json是空,另一个是两个a.b.c(虽然不可能出现)
            //就会导致两个不一样的json被判断为一样
            //介于不太可能发生,就不想改了,什么时候c#内置函数支持ref再改(强迫症=.=)
            return(path_list.Count == path_list.Distinct().Count() * 2);
        }
Пример #2
0
 /// <summary>
 /// 截取字符串
 /// </summary>
 public static string SubString(string str, int startIndex, int length)
 {
     str = ConvertHelper.GetString(str);
     if (str.Length > (startIndex + length))
     {
         return(str.Substring(startIndex, length));
     }
     return(str);
 }
Пример #3
0
        /*
         * string username = "******";
         * byte[] buffer = System.Text.Encoding.UTF8.GetBytes(username); //这是把字符串转成字节数组
         * Console.WriteLine(System.Text.Encoding.UTF8.GetString(buffer)); //这是把字节数组再转回到字符串
         *
         * Console.WriteLine(BitConverter.ToString(buffer)); // 这是把字节数组当作字符串输出(长度较长)
         * Console.WriteLine(Convert.ToBase64String(buffer)); //这是把字节数组当作一种所谓的Base64的字符串格式输出
         */

        public static string GetByteString(string str, Encoding encode = null)
        {
            if (encode == null)
            {
                encode = Encoding.UTF8;
            }
            byte[] b = encode.GetBytes(ConvertHelper.GetString(str));
            return(BitConverter.ToString(b));
        }
Пример #4
0
        /// <summary>
        /// 字典变url格式(a=1&b=3)
        /// </summary>
        public static string DictToUrlParams(Dictionary <string, string> data)
        {
            if (!ValidateHelper.IsPlumpDict(data))
            {
                return(string.Empty);
            }
            var arr = data.Keys.Select(x => $"{x}={ConvertHelper.GetString(data[x])}");

            return(string.Join("&", arr));
        }
Пример #5
0
        /// <summary>
        /// 提取文本中@对象 @用户
        /// http://blog.csdn.net/hfut_jf/article/details/49745701
        /// </summary>
        /// <param name="str"></param>
        /// <returns></returns>
        public static List <string> FindAtFromStr(string str)
        {
            var matchs = RegexHelper.FindMatchs(ConvertHelper.GetString(str), "@[\u4e00-\u9fa5a-zA-Z0-9_-]{2,30}");
            var list   = matchs?.Where(x => x.Success).Select(x => x.Value).Distinct().ToList();

            if (list == null)
            {
                list = new List <string>();
            }
            return(list);
        }
Пример #6
0
        /// <summary>
        /// 提取文本中的话题,格式:#话题#
        /// http://blog.csdn.net/hfut_jf/article/details/49745701
        /// </summary>
        /// <param name="str"></param>
        /// <returns></returns>
        public static List <string> FindTagsFromStr(string str)
        {
            var matchs = RegexHelper.FindMatchs(ConvertHelper.GetString(str), "#[^#]+#");
            var list   = matchs?.Where(x => x.Success).Select(x => x.Value).Distinct().ToList();

            if (list == null)
            {
                list = new List <string>();
            }
            return(list);
        }
Пример #7
0
        /// <summary>
        /// 移除后导字符串
        /// </summary>
        public static string TrimEnd(string str, string trimStr, bool ignoreCase = true)
        {
            str     = ConvertHelper.GetString(str);
            trimStr = ConvertHelper.GetString(trimStr);

            while (str.EndsWith(trimStr, ignoreCase, CultureInfo.CurrentCulture))
            {
                str = str.Substring(0, str.Length - trimStr.Length);
            }

            return(str);
        }
Пример #8
0
        /// <summary>
        /// 移除前导字符串
        /// </summary>
        public static string TrimStart(string str, string trimStr, bool ignoreCase = true)
        {
            str     = ConvertHelper.GetString(str);
            trimStr = ConvertHelper.GetString(trimStr);

            while (str.StartsWith(trimStr, ignoreCase, CultureInfo.CurrentCulture))
            {
                str = str.Remove(0, trimStr.Length);
            }

            return(str);
        }
Пример #9
0
 /// <summary>
 /// 是否是图片
 /// </summary>
 /// <param name="urlOrPathOrName"></param>
 /// <returns></returns>
 public static bool IsImage(string urlOrPathOrName)
 {
     urlOrPathOrName = ConvertHelper.GetString(urlOrPathOrName).Trim().ToLower();
     foreach (var ext in ImageExtesions)
     {
         if (urlOrPathOrName.EndsWith(ext))
         {
             return(true);
         }
     }
     return(false);
 }
Пример #10
0
        /// <summary>
        /// join 不会返回空
        /// </summary>
        public static string Join(string spliter, IList <string> list)
        {
            string str = string.Empty;

            if (!ValidateHelper.IsPlumpList(list))
            {
                return(str);
            }
            list.ToList().ForEach(delegate(string s)
            {
                s    = ConvertHelper.GetString(s);
                str += ((str == string.Empty) ? string.Empty : spliter) + s;
            });
            return(str);
        }
Пример #11
0
        /// <summary>
        /// 格式化数字格式
        /// </summary>
        /// <param name="num"></param>
        /// <returns></returns>
        public static string FormatNumber(string num)
        {
            var sp = ConvertHelper.GetString(num).Split('.');

            if (sp.Length != 2)
            {
                return(num);
            }
            var right = ConvertHelper.GetString(sp[1]);

            right = right.TrimEnd('0');
            var left = sp[0];

            if (ValidateHelper.IsPlumpString(right))
            {
                left += "." + right;
            }
            return(left);
        }
Пример #12
0
 /// <summary>
 /// 可能返回空
 /// </summary>
 /// <param name="str"></param>
 /// <param name="spliter"></param>
 /// <returns></returns>
 public static List <string> Split(string str, params char[] spliter)
 {
     return(ConvertHelper.GetString(str).Split(spliter).ToList());
 }
Пример #13
0
 /// <summary>
 /// 把对象可读属性读出来变成字典
 /// </summary>
 /// <param name="data"></param>
 /// <returns></returns>
 public static Dictionary <string, string> ObjectToStringDict(object data)
 {
     return(ObjectToDict_(data).ToDictionary(x => x.Key, x => ConvertHelper.GetString(x.Value)));
 }
Пример #14
0
 /// <summary>
 /// 获取字符前几位,并加省略号
 /// </summary>
 /// <param name="str"></param>
 /// <param name="len"></param>
 /// <returns></returns>
 public static string GetPreviewString(string str, int len)
 {
     str = ConvertHelper.GetString(str);
     return((str.Length <= len) ? str : str.Substring(0, len) + "...");
 }