C# StringExt 字符串扩展
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 字符串扩展的更多相关文章
- es3中使用es6/7的字符串扩展
最近在看阮一峰的<ES6标准入门>,在字符串扩展一节中有提到几个新的扩展,觉得挺有意思,想在ES3里面使用,于是就有下面的兼容性写法. repeat 将一个字符串重复n次 String.p ...
- ES6字符串扩展
前面的话 字符串是编程中重要的数据类型,只有熟练掌握字符串操作才能更高效地开发程序.JS字符串的特性总是落后于其它语言,例如,直到 ES5 中字符串才获得了 trim() 方法.而 ES6 则继续添加 ...
- ES6中字符串扩展
ES6中字符串扩展 ① for...of 遍历字符串: 例如: for(let codePoint of 'string'){ console.log(codePoint) } 运行结果: ② in ...
- es6基础(4)--字符串扩展
//字符串扩展 { console.log('a','\u0061'); console.log('s','\u20BB7');//超过了0xffff console.log('s','\u{20BB ...
- 002-es6字符串扩展
1.字符串扩展 参考地址:http://es6.ruanyifeng.com/#docs/string 1.1.codePointAt() JavaScript 内部,字符以 UTF-16 的格式储存 ...
- 【ES6基础】字符串扩展
4.字符串扩展 (1)for...of循环遍历. let foo = [1,2,3,4,5,6] for(let i of foo){ console.log(i); } 结果: (2)include ...
- ES6之字符串扩展方法(常用)
es6这个String对象倒是扩展了不少方法,但是很多都是跟字符编码相关,个人选了几个感觉比较常用的方法: includes 搜索字符的神器 还记得我们之前如何判断某个字符串对象是否包含特地字符的吗? ...
- ES6之字符串扩展
ES6字符串新增的常用方法: 1. includes(): 字符串中是否包含某个字符或字符串, 包含的两个字符必须是相连的 let str = 'hello, world' str.includes( ...
- C# 一些常用的字符串扩展方法
以下可能是常用的.net扩展方法,记录下 EString.cs文件 /// <summary> /// 扩展字符串类 /// </summary> public static ...
随机推荐
- [BZOJ 2048] [2009国家集训队]书堆 【调和级数】
题目链接:BZOJ - 2048 题目分析 只有一本书时,这本书的重心落在桌子边缘上,伸出桌面的长度就是 1/2. 有两本书时,第一本书的重心就落在第二本书的边缘上,两本书的重心落在桌子边缘上,两本书 ...
- hdu 4442
一道超级easy的贪心 一眼看出了他的本质: 代码: #define mod 31536000 #include<cstdio> #include<algorithm> #in ...
- 你晓得吗?大多数企业根本没有做到 DevOps!
作为当代 IT 企业提升效率的葵花宝典,DevOps 对 IT 企业效率的提升有目共睹 ,一时之间各大企业纷纷用提升效率的 DevOps 开发.协作.管理工具武装自己. 对比 2014 年上半年,CS ...
- Android JNI使用方法
经过几天的努力终于搞定了android JNI部分,下面将我的这个小程序和大家分享一下.android JNI是连接android Java部分和C/C++部分的纽带,完整使用JNI需要Java代码和 ...
- Migrating from IntelliJ Projects
We might provide an automatic migration option in Android Studio in the future. For now, to migrat ...
- Jsoup 解析 HTML
Jsoup 文档 方法 要取得一个属性的值,可以使用Node.attr(String key) 方法 对于一个元素中的文本,可以使用Element.text()方法 对于要取得元素或属性中的HTML内 ...
- Web安全测试之XSS(转)
XSS 全称(Cross Site Scripting) 跨站脚本攻击, 是Web程序中最常见的漏洞.指攻击者在网页中嵌入客户端脚本(例如JavaScript), 当用户浏览此网页时,脚本就会在用户的 ...
- CF 370
A:http://codeforces.com/problemset/problem/370/A #include<stdio.h> #include<string.h> #i ...
- C#语言的几个层次
接到一位前不久C#培训学员的来信,这位学员虽然以前功底欠缺,但学习劲头很足,在培训中成长很快.即便基本吃透<.NET框架(修订版)>还嫌不够过瘾,一心要成为高手中的高手.来信的目的是希望我 ...
- Android——service重启
一.在application中注册消息监听 public class BackgroundServiceApplication extends Application { @Override publ ...