using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Service.Common
{
    public static class StringExt
    {
        public static string JoinToString<T>(this IEnumerable<T> collection, string split)
        {
            if (collection == null || !collection.Any()) return string.Empty;

StringBuilder sb = new StringBuilder();
            foreach (T t in collection)
            {
                sb.Append(t).Append(split);
            }
            if (sb.Length > 0)
            {
                sb.Remove(sb.Length - split.Length, split.Length);
            }

return sb.ToString();
        }

public static DateTime ToDateTime(this string value, DateTime defaultValue)
        {
            DateTime temp;
            if (DateTime.TryParse(value, out temp))
            {
                return temp;
            }
            else
            {
                return defaultValue;
            }
        }

public static int ToInt32(this string value, int defaultValue)
        {
            int temp;
            if (int.TryParse(value, out temp))
            {
                return temp;
            }
            else
            {
                return defaultValue;
            }
        }

public static long ToInt64(this string value, long defaultValue)
        {
            long temp;
            if (long.TryParse(value, out temp))
            {
                return temp;
            }
            else
            {
                return defaultValue;
            }
        }

public static decimal ToDecimal(this string value, decimal defaultValue)
        {
            decimal temp;
            if (decimal.TryParse(value, out temp))
            {
                return temp;
            }
            else
            {
                return defaultValue;
            }
        }

public static double ToDouble(this string value, double defaultValue)
        {
            double temp;
            if (double.TryParse(value, out temp))
            {
                return temp;
            }
            else
            {
                return defaultValue;
            }
        }

public static float ToSingle(this string value, float defaultValue)
        {
            float temp;
            if (float.TryParse(value, out temp))
            {
                return temp;
            }
            else
            {
                return defaultValue;
            }
        }

public static DateTime? ToDateTimeNullable(this string value)
        {
            DateTime temp;
            if (DateTime.TryParse(value, out temp))
            {
                return temp;
            }
            else
            {
                return null;
            }
        }

public static int? ToInt32Nullable(this string value)
        {
            int temp;
            if (int.TryParse(value, out temp))
            {
                return temp;
            }
            else
            {
                return null;
            }
        }

public static long? ToInt64Nullable(this string value)
        {
            long temp;
            if (long.TryParse(value, out temp))
            {
                return temp;
            }
            else
            {
                return null;
            }
        }

public static decimal? ToDecimalNullable(this string value)
        {
            decimal temp;
            if (decimal.TryParse(value, out temp))
            {
                return temp;
            }
            else
            {
                return null;
            }
        }

public static double? ToDoubleNullable(this string value)
        {
            double temp;
            if (double.TryParse(value, out temp))
            {
                return temp;
            }
            else
            {
                return null;
            }
        }

public static float? ToSingleNullable(this string value)
        {
            float temp;
            if (float.TryParse(value, out temp))
            {
                return temp;
            }
            else
            {
                return null;
            }
        }

public static T? Parse<T>(this string value, Func<string, T> parseFunc)
            where T : struct
        {
            if (string.IsNullOrEmpty(value))
            {
                return null;
            }
            else
            {
                return parseFunc(value.Trim());
            }
        }

public static int TryParseInt(this string value)
        {
            int temp;
            if (int.TryParse(value, out temp))
            {
                return temp;
            }
            else
            {
                return 0;
            }
        }

/// <summary>
        /// 类型转换
        /// </summary>
        public static T Value<T>(this object value)
        {
            if (value == null)
            {
                return default(T);
            }
            if (value is T)
                return (T)value;
            else if (value == DBNull.Value)
            {
                if (typeof(T) == typeof(DateTime))
                {
                    object o = new DateTime(1900, 1, 1);
                    return (T)o;
                }
                else
                    return default(T);
            }
            else if (value.ToString().ToLower() == "null")
                return default(T);            
            else
                return (T)Convert.ChangeType(value, typeof(T));
        }

public static T Value<T>(this object value, Func<object, T> funcConvert)
        {
            if (value == null)
            {
                return default(T);
            }

string s = value.ToString();
            if (string.IsNullOrEmpty(s) || s.ToLower() == "null")
            {
                return default(T);
            }

return funcConvert(value);
        }

public static object Value(this object value)
        {
            return Value<object>(value);
        }

public static string DecimalToString(this object value, string format)
        {
            if (value == null) return string.Empty;
            if (value is string)
            {
                if (value == string.Empty) return string.Empty;
                return Convert.ToDecimal(value).ToString(format);
            }
            else if (value is decimal)
            {
                return Convert.ToDecimal(value).ToString(format);
            }
            else
            {
                return value.ToString();
            }
        }

public static string ValueToString(this object value)
        {
            return ValueToString(value, false);
        }

public static string ValueToString(this object value, bool removeLines)
        {
            if (value == null)
            {
                return string.Empty;
            }

string s = value.ToString();
            if (string.IsNullOrEmpty(s) || s.ToLower() == "null")
            {
                return string.Empty;
            }

if (removeLines)
            {
                s = s.Replace("\r", " ").Replace("\n", " ").Replace("<br />", " ").Replace("<br/>", " ").Replace("<br>", " ").Replace("\t", " ");
            }

return s;
        }

public static object IsNull(this object value, object replaceValue)
        {
            if (value == null)
            {
                return replaceValue;
            }
            else
            {
                return value;
            }
        }

public static T IsNull<T>(this T value, T replaceValue)
        {
            if (value.Equals(default(T)))
            {
                return replaceValue;
            }
            else
            {
                return value;
            }
        }

public static string IsNull(this string value, string replaceValue)
        {
            if (string.IsNullOrEmpty(value))
            {
                return replaceValue;
            }
            else
            {
                return value;
            }
        }

/// <summary>
        /// 去除非法的文件字符
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        public static string RemoveInvalidFileChars(this string input)
        {
            char[] invalidChars = Path.GetInvalidFileNameChars();
            foreach (char c in invalidChars)
            {
                input = input.Replace(c.ToString(), "");
            }
            return input;
        }

}
}

C# StringExt 字符串扩展的更多相关文章

  1. es3中使用es6/7的字符串扩展

    最近在看阮一峰的<ES6标准入门>,在字符串扩展一节中有提到几个新的扩展,觉得挺有意思,想在ES3里面使用,于是就有下面的兼容性写法. repeat 将一个字符串重复n次 String.p ...

  2. ES6字符串扩展

    前面的话 字符串是编程中重要的数据类型,只有熟练掌握字符串操作才能更高效地开发程序.JS字符串的特性总是落后于其它语言,例如,直到 ES5 中字符串才获得了 trim() 方法.而 ES6 则继续添加 ...

  3. ES6中字符串扩展

    ES6中字符串扩展 ① for...of 遍历字符串: 例如: for(let codePoint of 'string'){ console.log(codePoint) } 运行结果: ②  in ...

  4. es6基础(4)--字符串扩展

    //字符串扩展 { console.log('a','\u0061'); console.log('s','\u20BB7');//超过了0xffff console.log('s','\u{20BB ...

  5. 002-es6字符串扩展

    1.字符串扩展 参考地址:http://es6.ruanyifeng.com/#docs/string 1.1.codePointAt() JavaScript 内部,字符以 UTF-16 的格式储存 ...

  6. 【ES6基础】字符串扩展

    4.字符串扩展 (1)for...of循环遍历. let foo = [1,2,3,4,5,6] for(let i of foo){ console.log(i); } 结果: (2)include ...

  7. ES6之字符串扩展方法(常用)

    es6这个String对象倒是扩展了不少方法,但是很多都是跟字符编码相关,个人选了几个感觉比较常用的方法: includes 搜索字符的神器 还记得我们之前如何判断某个字符串对象是否包含特地字符的吗? ...

  8. ES6之字符串扩展

    ES6字符串新增的常用方法: 1. includes(): 字符串中是否包含某个字符或字符串, 包含的两个字符必须是相连的 let str = 'hello, world' str.includes( ...

  9. C# 一些常用的字符串扩展方法

    以下可能是常用的.net扩展方法,记录下 EString.cs文件 /// <summary> /// 扩展字符串类 /// </summary> public static ...

随机推荐

  1. [BZOJ 2048] [2009国家集训队]书堆 【调和级数】

    题目链接:BZOJ - 2048 题目分析 只有一本书时,这本书的重心落在桌子边缘上,伸出桌面的长度就是 1/2. 有两本书时,第一本书的重心就落在第二本书的边缘上,两本书的重心落在桌子边缘上,两本书 ...

  2. hdu 4442

    一道超级easy的贪心 一眼看出了他的本质: 代码: #define mod 31536000 #include<cstdio> #include<algorithm> #in ...

  3. 你晓得吗?大多数企业根本没有做到 DevOps!

    作为当代 IT 企业提升效率的葵花宝典,DevOps 对 IT 企业效率的提升有目共睹 ,一时之间各大企业纷纷用提升效率的 DevOps 开发.协作.管理工具武装自己. 对比 2014 年上半年,CS ...

  4. Android JNI使用方法

    经过几天的努力终于搞定了android JNI部分,下面将我的这个小程序和大家分享一下.android JNI是连接android Java部分和C/C++部分的纽带,完整使用JNI需要Java代码和 ...

  5. Migrating from IntelliJ Projects

    We might provide an automatic migration option in Android Studio in the future.   For now, to migrat ...

  6. Jsoup 解析 HTML

    Jsoup 文档 方法 要取得一个属性的值,可以使用Node.attr(String key) 方法 对于一个元素中的文本,可以使用Element.text()方法 对于要取得元素或属性中的HTML内 ...

  7. Web安全测试之XSS(转)

    XSS 全称(Cross Site Scripting) 跨站脚本攻击, 是Web程序中最常见的漏洞.指攻击者在网页中嵌入客户端脚本(例如JavaScript), 当用户浏览此网页时,脚本就会在用户的 ...

  8. CF 370

    A:http://codeforces.com/problemset/problem/370/A #include<stdio.h> #include<string.h> #i ...

  9. C#语言的几个层次

    接到一位前不久C#培训学员的来信,这位学员虽然以前功底欠缺,但学习劲头很足,在培训中成长很快.即便基本吃透<.NET框架(修订版)>还嫌不够过瘾,一心要成为高手中的高手.来信的目的是希望我 ...

  10. Android——service重启

    一.在application中注册消息监听 public class BackgroundServiceApplication extends Application { @Override publ ...