两个简单的扩展方法:TrimPrefix和TrimSuffix

简介:

今天写程序频繁用到两中字符串操作:删除某个字符串指定的前缀和后缀。由于没有现成的方法可用,写了两个扩展方法:TrimPrefix和TrimSuffix。

   1: namespace System
   2: {
   3:     public static class StringExtensions
   4:     {
   5:         public static string TrimPrefix(this string sourceString, string prefix, bool ignoreCase = false)
   6:         {
   7:             prefix = prefix ?? string.Empty;
   8:             if(!sourceString.StartsWith(prefix,ignoreCase, CultureInfo.CurrentCulture))
   9:             {
  10:                 return sourceString;
  11:             }
  12:  
  13:             return sourceString.Remove(0, prefix.Length);
  14:         }
  15:  
  16:         public static string TrimSuffix(this string sourceString, string suffix, bool ignoreCase = false)
  17:         {
  18:             suffix = suffix ?? string.Empty;
  19:             if (!sourceString.EndsWith(suffix, ignoreCase, CultureInfo.CurrentCulture))
  20:             {
  21:                 return sourceString;
  22:             }
  23:             return sourceString.Substring(0, sourceString.Length - suffix.Length);
  24:         }
  25:     }
  26: }

程序调用:

   1: static void Main(string[] args)
   2: {
   3:     string sourceString = "ABC123";
   4:     Console.WriteLine(sourceString.TrimPrefix("ABC"));
   5:     Console.WriteLine(sourceString.TrimSuffix("123"));
   6: }

输出结果:

   1: 123
   2: ABC

作者:蒋金楠
微信公众账号:大内老A
微博: www.weibo.com/artech
如果你想及时得到个人撰写文章以及著作的消息推送,或者想看看个人推荐的技术资料,可以扫描左边二维码(或者长按识别二维码)关注个人公众号(原来公众帐号 蒋金楠的自媒体将会停用)。
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
相关文章
|
NoSQL Redis
Redis下Lua脚本的复制模式
假设我们的Redis选择了主从架构, 和AOF持久化方式。我们执行一条写命令时, 该条命令会被发送到从服务器, 和追加到AOF文件中。当我们执行的不是一条命令, 而是Lua脚本时, 默认情况下, 整个Lua脚本的内容会进行复制, 但是存在一些特殊情况。
2469 0
Redis下Lua脚本的复制模式
|
11月前
|
设计模式
如何在代码审查中保证代码的可维护性?
通过以上这些方面的审查,可以有效地提高代码的可维护性,使代码更易于理解、修改和扩展。
305 59
.cer 文件添加到钥匙串报错:不能修改“System Roots”钥匙串
1、报错信息: 不能修改“System Roots”钥匙串: 要更改根证书是否会被信任,请在“钥匙串访问”中打开它,然后修改它的信任设置 2、网上搜索的答案都是: 钥匙串访问的界面左侧,选择“登录”或login按钮,直接将.
5952 0
|
监控 安全 算法
【面试问题】如果让你设计一个线程池如何设计?
【1月更文挑战第27天】【面试问题】如果让你设计一个线程池如何设计?
|
缓存 JSON Go
反射深度揭秘之 reflect.Elem() 方法解析
反射深度揭秘之 reflect.Elem() 方法解析
565 0
|
SQL XML Java
【MyBatis】 MyBatis与MyBatis-Plus的区别
【MyBatis】 MyBatis与MyBatis-Plus的区别
7021 0
【MyBatis】 MyBatis与MyBatis-Plus的区别
|
设计模式 存储 JSON
带你通关全栈树型结构设计:从数据库到前端
今天咱们要讨论的树,它不是现实结构的树,也不是数据结构要讨论的树,而是「从业务视角抽象出来的树形结构」。
1233 1
|
存储 Go
善用这些技巧 Go语言map元素删除那么简单
善用这些技巧 Go语言map元素删除那么简单
3239 0
|
NoSQL 算法 Java
聊聊redis分布式锁的8大坑
聊聊redis分布式锁的8大坑
1672 0
|
存储 关系型数据库 MySQL
面试官:MySQL 中的 varchar 最多能存储多少个字符?大部分人都会答错。。。(2)
面试官:MySQL 中的 varchar 最多能存储多少个字符?大部分人都会答错。。。(2)
1172 0
面试官:MySQL 中的 varchar 最多能存储多少个字符?大部分人都会答错。。。(2)