问题描述
如题,在.NET/C#程序开发中,我们都在不停地与字符串打交道,截断字符串也是常规的需求,那么,如何截断一个字符串,有哪些方式可以实现字符串的截断,哪种方式更优美呢?
方案一
在.NET/C#中,并没有内置关于字符串的方法供我们直接调用,我们如果需要截断字符串,必须自己实现截断的逻辑,如下就实现了一个静态扩展方法:
public static class StringExt
{
public static string Truncate(this string value, int maxLength)
{
if (string.IsNullOrEmpty(value)) return value;
return value.Length <= maxLength ? value : value.Substring(0, maxLength);
}
}
调用方法:
var someString = "...";
someString = someString.Truncate(2);
方案二
public static class StringExt
{
public static string Truncate( this string value, int maxLength )
{
if (string.IsNullOrEmpty(value)) { return value; }
return value.Substring(0, Math.Min(value.Length, maxLength));
}
}
方案三
public static string Truncate(this string value, int maxLength)
{
if (!string.IsNullOrEmpty(value) && value.Length > maxLength)
{
return value.Substring(0, maxLength);
}
return value;
}
方案四
可以使用Linq
的Join()
方法,如:
string result = string.Join("", value.Take(maxLength)); // .NET 4
或者:
string result = new string(value.Take(maxLength).ToArray());
方案五
在.NET 4.0以及上版本,我们也可以使用Concat()
方法,如下:
string.Concat(myString.Take(maxLength));
方案六
public static string Truncate(this string text, int maxLength, string suffix = "...")
{
string str = text;
if (maxLength > 0)
{
int length = maxLength - suffix.Length;
if (length <= 0)
{
return str;
}
if ((text != null) && (text.Length > maxLength))
{
return (text.Substring(0, length).TrimEnd(new char[0]) + suffix);
}
}
return str;
}
var myString = "hello world"
var myTruncatedString = myString.Truncate(4);
方案七
public static string Truncate(this string str,
int totalLength,
string truncationIndicator = "")
{
if (string.IsNullOrEmpty(str) || str.Length < totalLength)
return str;
return str.Substring(0, totalLength - truncationIndicator.Length)
+ truncationIndicator;
}
调用方法:
"I use it like this".Truncate(5,"...")
版权声明:本作品系原创,版权归码友网所有,如未经许可,禁止任何形式转载,违者必究。
发表评论
登录用户才能发表评论, 请 登 录 或者 注册