场景:只显示一字符串的前50个字符,多余的用“...”省略号替代

如果不用扩展方法当然也可以实现,写一个静态方法,如下:

public class StringUtil
{
/// <summary>
/// 截取字符串
/// </summary>
/// <param name="str">要截取的字符串</param>
/// <param name="length">截取长度</param>
/// <returns></returns>
public static string CutString(string str, int length)
{
if (!string.IsNullOrEmpty(str))
{
if (str.Length <= length)
{
return str;
}
else
{
return str.Substring(, length) + "...";
}
}
else
{
return "";
}
}
}

不用扩展方法

调用:

string result=StringUtil.CutString(str,50);

使用扩展方法:

使用扩展方法要注意两个点:1)扩展方法必须定义在静态类中,2)使用this关键字

public static class StringExtension
{
/// <summary>
/// 截取字符串,多余部分用"..."代替
/// </summary>
/// <param name="str">源字符串</param>
/// <param name="length">截取长度</param>
/// <returns></returns>
public static string CutString(this string str, int length)
{
if (!string.IsNullOrEmpty(str))
{
if (str.Length <= length)
{
return str;
}
else
{
return str.Substring(, length) + "...";
}
}
else
{
return "";
}
}
}

扩展方法

调用:

string result=str.CutString(50);

这样是不是方便一些,代码简洁一些,就像你去调用ToString(),Substring()等系统定义的方法一样。

c# string 扩展方法的更多相关文章

  1. 扩展方法 1 简单的string扩展方法

    这里是关于 String的简单扩展方法 (静态类 静态方法 this 类型 这里是string) static class Program { static void Main(string[] ar ...

  2. JS中的PadLeft、PadRight,位数不足,自动补位,String扩展方法

    类似C#中的 PadLeft.PadRight方法 //方法一 function FillZero(p) { return new Array(3 - (p + '').length + 1).joi ...

  3. C#扩展方法知多少

    前言:上篇 序列化效率比拼——谁是最后的赢家Newtonsoft.Json 介绍了下序列化方面的知识.看过Demo的朋友可能注意到了里面就用到过泛型的扩展方法,本篇打算总结下C#扩展方法的用法.博主打 ...

  4. C#扩展方法学习笔记

    C#扩展方法,简单的理解是不修改原来类的源代码的情况下,为某个类添加某个方法.扩展方法被定义为静态方法,但它们是通过实例方法语法进行调用的.它们的第一个参数指定该方法作用于哪个类型,并且该参数以 th ...

  5. 再谈扩展方法,从string.IsNullOrEmpty()说起

    string.IsNullOrEmpty()这个方法算得上是.net中使用频率最高的方法之一.此方法是string的一个静态方法,类似的静态方法在string这个类中还有很多.那么这样的方法作为静态方 ...

  6. ASP.Net string 类的扩展方法 [转]

    string 类的扩展方法列表(基本相同于 IEnumerable<T> 接口的成员列表): Aggregate<>     //累加 All<>        / ...

  7. c# 扩展方法 奇思妙用 高级篇 九:OrderBy(string propertyName, bool desc)

    下面是 Queryable 类 中最常用的两个排序的扩展方法: 1 2 public static IOrderedQueryable<TSource> OrderBy<TSourc ...

  8. 给 string 添加一个 GetInputStream 扩展方法

    有时候,我们须要读取一些数据,而无论这数据来源于磁盘上的数据文件,还是来源于网络上的数据.于是.就有了以下的 StringExtensions.cs: using System; using Syst ...

  9. 给string定义一个扩展方法

    创建一个 static 的类,并且里面的方法也必须是static的,第一个参数是被扩展的对象,必须标注为this,使用时,必须保证namespace using进来了. 实例: using Syste ...

随机推荐

  1. php 无限分类 树形数据 格式化

    测试demo ------------------------------------------------------------------------------------ <?php ...

  2. unable to locate package gparted

    在unbuntu安装gparted的时候出现这个错误提示,意思为:找不到这个安装包 可能的原因: 1.当前系统更新包没有更新,执行命令:sudo apt-get update 2.命令错误,重新检查需 ...

  3. Java知多少(64)线程死锁

    需要避免的与多任务处理有关的特殊错误类型是死锁(deadlock).死锁发生在当两个线程对一对同步对象有循环依赖关系时.例如,假定一个线程进入了对象X的管程而另一个线程进入了对象Y的管程.如果X的线程 ...

  4. r 随机数

    R软件一个显著的优点是它提供了丰富的随机数发生器,比SAS.Matlab方面很多,比Excel更不知方便到哪里去了.这无疑为统计学.工程学以及寿险精算学提供了很大的方便,比如我们要产生200个服从正态 ...

  5. R语言使用RMySQL连接及读写Mysql数据库

    简单说下安装过程,一般不会有问题,重点是RMySQL的使用方式. 系统环境说明 Redhat系统:Linux 460-42.6.32-431.29.2.el6.x86_64 系统编码:LANG=zh_ ...

  6. rqalpha环境搭建(windows版)

    windows环境: win7 64bit rqalpha版本3.0.9 参考文档:http://rqalpha.readthedocs.io/zh_CN/latest/intro/install.h ...

  7. SpringBatch的初步了解

    一.SpringBatch是一个批处理的框架,作为一个Spring组件,提供了通过使用Spring的依赖注入来处理批处理的条件. 什么是批处理呢? 在现代企业应用当中,面对复杂的业务以及海量的数据,除 ...

  8. [Tensorflow] Cookbook - Retraining Existing CNNs models - Inception Model

    From: https://github.com/jcjohnson/cnn-benchmarks#alexnet 先大概了解模型,再看如果加载pre-training weight. 关于retai ...

  9. PHP伪造referer突破网盘禁止外链(附115源码)

    新建一个文件file.php.后面的参数就是需要伪造referfer的目标地址吧.如:file.php/http://www.xxx.xxx/xxx.mp3 复制内容到剪贴板 代码: <?$ur ...

  10. JS 如何将“在线图片资源”转换成“base64”

    在实现html2canvas截图的功能时,会报下面的错误: Uncaught DOMException: Failed to execute 'toDataURL' on 'HTMLCanvasEle ...