C# 截取字符串

2023-05-16

 
本文章已收录于:


  1. //str为要进行截取的字符串,start是第一个关键字(字符串),last是第二个关键字(字符串)  
  2. public string GetContent(string str, string start, string last, int n)     
  3.     {          
  4.     if (str.ToLower().IndexOf(start.ToLower()) >= 0)      
  5.         {             
  6.         if (str.ToLower().IndexOf(last.ToLower()) >= 0)     
  7.             {                  
  8.             switch (n)            
  9.                 {                    
  10.                 //左右都截取(都取前面)(包含关键字)       
  11.                 case 1: str = str.Substring(str.ToLower().IndexOf(start.ToLower()), str.Length - str.ToLower().IndexOf(start.ToLower()));   
  12.                 str = str.Substring(0, str.ToLower().IndexOf(last.ToLower()) + last.Length); break;           
  13.                 //左右都截取(都取前面)(去除关键字)                    
  14.                 case 2: str = str.Substring(str.ToLower().IndexOf(start.ToLower()) + start.Length, str.Length - str.ToLower().IndexOf(start.ToLower()) - start.Length);   
  15.                 str = str.Substring(0, str.ToLower().IndexOf(last.ToLower())); break;         
  16.                 //左右都截取(都取后面)(包含关键字)                    
  17.                 case 3: str = str.Substring(str.ToLower().LastIndexOf(start.ToLower()), str.Length - str.ToLower().LastIndexOf(start.ToLower()));   
  18.                 str = str.Substring(0, str.ToLower().LastIndexOf(last.ToLower()) + last.Length); break;        
  19.                 //左右都截取(都取后面)(去除关键字)                    
  20.                 case 4: str = str.Substring(str.ToLower().LastIndexOf(start.ToLower()) + start.Length, str.Length - str.ToLower().LastIndexOf(start.ToLower()) - start.Length);   
  21.                 str = str.Substring(0, str.ToLower().LastIndexOf(last.ToLower())); break;               
  22.                 //左右都截取(一前一后)(包含关键字)                      
  23.                 case 5: str = str.Substring(str.ToLower().IndexOf(start.ToLower()), str.Length - str.ToLower().IndexOf(start.ToLower()));   
  24.                 str = str.Substring(0, str.ToLower().LastIndexOf(last.ToLower()) + last.Length); break;          
  25.                 //左右都截取(一前一后)(去除关键字)                      
  26.                 case 6: str = str.Substring(str.ToLower().IndexOf(start.ToLower()) + start.Length, str.Length - str.ToLower().IndexOf(start.ToLower()) - start.Length);  
  27.                 str = str.Substring(0, str.ToLower().LastIndexOf(last.ToLower())); break;              
  28.                 default: str = ""break;               
  29.                 }              
  30.                 }         
  31.                 else           
  32.                     {              
  33.                     switch (n)         
  34.                         {                 
  35.                         //只往左截取(取前面的)(包含关键字)           
  36.                         case 7: str = str.Substring(0, str.ToLower().IndexOf(start.ToLower()) + start.Length); break;       
  37.                         //只往左截取(取前面的)(去除关键字)                    
  38.                         case 8: str = str.Substring(0, str.ToLower().IndexOf(start.ToLower())); break;         
  39.                         //只往左截取(取后面的)(包含关键字)                   
  40.                         case 9: str = str.Substring(0, str.ToLower().LastIndexOf(start.ToLower()) + start.Length); break;   
  41.                         //只往左截取(取后面的)(去除关键字)                  
  42.                         case 10: str = str.Substring(0, str.ToLower().LastIndexOf(start.ToLower())); break;              
  43.                         //只往右截取(取前面的)(包含关键字)                    
  44.                         case 11: str = str.Substring(str.ToLower().IndexOf(start.ToLower()), str.Length - str.ToLower().IndexOf(start.ToLower())); break;    
  45.                         //只往右截取(取前面的)(去除关键字)                  
  46.                         case 12: str = str.Substring(str.ToLower().IndexOf(start.ToLower()) + start.Length, str.Length - str.ToLower().IndexOf(start.ToLower()) - start.Length); break;    
  47.                         //只往右截取(取后面的)(包含关键字)                    
  48.                         case 13: str = str.Substring(str.ToLower().LastIndexOf(start.ToLower()), str.Length - str.ToLower().LastIndexOf(start.ToLower())); break;                
  49.                         //只往右截取(取后面的)(去除关键字)                     
  50.                         case 14: str = str.Substring(str.ToLower().LastIndexOf(start.ToLower()) + start.Length, str.Length - str.ToLower().LastIndexOf(start.ToLower()) - start.Length); break;     
  51.                         default: str = "无"break;             
  52.                         }           
  53.                         }        
  54.                         }        
  55.                         else       
  56.                             {           
  57.                             str = "无!";     
  58.                             }         
  59.                             return str;   
  60.                             }  
C# 之 字符串截取--Substring
          
       说到字符串截取,大家首先相当的应该就是substring函数,今天就来给大家讲讲substring函数。


1.public String Substring(int startIndex);

       从此字符串检索子字符串。 子字符串从指定的字符位置(第startIndex个字符)开始,一直到此字符串末尾。

[csharp] view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. class Program  
  2.     {  
  3.         static void Main(string[] args)  
  4.         {  
  5.             string s1 = "所属机构名称/教师姓名/课程类型/课程名称";  
  6.   
  7.             Console.WriteLine(s1.Substring(0));  
  8.             Console.WriteLine(s1.Substring(4));  
  9.             Console.WriteLine(s1.Substring(s1.Length));  
  10.             Console.WriteLine("--------------------------------");  
  11.             Console.WriteLine(s1.Substring(s1.Length+1));  
  12.               
  13.         }  
  14.     }  
class Program
    {
        static void Main(string[] args)
        {
            string s1 = "所属机构名称/教师姓名/课程类型/课程名称";

            Console.WriteLine(s1.Substring(0));
            Console.WriteLine(s1.Substring(4));
            Console.WriteLine(s1.Substring(s1.Length));
            Console.WriteLine("--------------------------------");
            Console.WriteLine(s1.Substring(s1.Length+1));
            
        }
    }




2.public string Substring(int startIndex, int length);
        从此字符串检索子字符串。 子字符串从指定的字符位置第startIndex个字符)开始,且具有指定的长度(子字符串的长度length)。

[csharp] view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. class Program  
  2.     {  
  3.         static void Main(string[] args)  
  4.         {  
  5.             string s1 = "所属机构名称/教师姓名/课程类型/课程名称";  
  6.   
  7.             Console.WriteLine(s1.Substring(0,0));  
  8.             Console.WriteLine(s1.Substring(4,10));  
  9.             Console.WriteLine(s1.Substring(s1.Length,0));  
  10.             Console.WriteLine("--------------------------------");  
  11.             //Console.WriteLine(s1.Substring(4,s1.Length));     //字符串长度超出范围  
  12.             //Console.WriteLine(s1.Substring(s1.Length,1));     //字符串长度超出范围  
  13.             Console.WriteLine(s1.Substring(s1.Length+1));       //开始位置不能大于字符串长度  
  14.               
  15.         }  
  16.     }  
class Program
    {
        static void Main(string[] args)
        {
            string s1 = "所属机构名称/教师姓名/课程类型/课程名称";

            Console.WriteLine(s1.Substring(0,0));
            Console.WriteLine(s1.Substring(4,10));
            Console.WriteLine(s1.Substring(s1.Length,0));
            Console.WriteLine("--------------------------------");
            //Console.WriteLine(s1.Substring(4,s1.Length));     //字符串长度超出范围
            //Console.WriteLine(s1.Substring(s1.Length,1));     //字符串长度超出范围
            Console.WriteLine(s1.Substring(s1.Length+1));       //开始位置不能大于字符串长度
            
        }
    }





        现在我们有这么一个需求,将"所属机构名称/教师姓名/课程类型/课程名称"这个字符串,按照"/"分别截取出来,下面看看我们用Substring函数怎么实现。

[csharp] view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. class Program  
  2.     {  
  3.         static void Main(string[] args)  
  4.         {  
  5.             string s1 = "所属机构名称/教师姓名/课程类型/课程名称";  
  6.   
  7.             int first = s1.IndexOf("/")+1;      //第一个"/"的位置  
  8.             int second = s1.IndexOf("/", first + 1) + 1;      //第二个"/"的位置  
  9.             int third = s1.IndexOf("/", second + 1) + 1;       //第三个"/"的位置  
  10.             Console.WriteLine("第一个'/ '的位置: " + first);     //7  
  11.             Console.WriteLine("第二个'/ '的位置: " + second );    //12  
  12.             Console.WriteLine("第三个'/ '的位置: " + third );     //16  
  13.   
  14.             int startIndex1 = 0;  
  15.             int length1 = first - 1;  //6--"所属机构名称"中"称"的位置  
  16.             Console.WriteLine("length1=" + length1);  
  17.             Console.WriteLine(s1.Substring(startIndex1,length1));   //所属机构名称--从第0个位置开始,6个字符  
  18.             Console.WriteLine("-------------------------------------------------");  
  19.   
  20.             int startIndex2 = first ;    //7  
  21.             int length2 = (second-1) -first;       //4--"教师姓名"中"名"的位置-第一个"/"的位置  
  22.             Console.WriteLine("startIndex2=" + startIndex2);  
  23.             Console.WriteLine("length2=" + length2);  
  24.             Console.WriteLine(s1.Substring(startIndex2, length2));   //教师姓名--从第7个位置开始,4个字符  
  25.             Console.WriteLine("-------------------------------------------------");  
  26.   
  27.             int startIndex3 = second  ;       //12  
  28.             int length3 = (third -1)-second ;       //4--"课程类型"中"型"的位置-第二个"/"的位置  
  29.             Console.WriteLine("startIndex3=" + startIndex3);  
  30.             Console.WriteLine("length3=" + length3);  
  31.             Console.WriteLine(s1.Substring(startIndex3, length3));   //课程类型--从第12个位置开始,4个字符  
  32.             Console.WriteLine("-------------------------------------------------");  
  33.   
  34.             int startIndex4 = third ;   //17  
  35.             Console.WriteLine("startIndex4=" + startIndex4);  
  36.             Console.WriteLine(s1.Substring(startIndex4));   //课程名称--从第17个位置开始  
  37.             Console.WriteLine("-------------------------------------------------");  
  38.   
  39.               
  40.         }  
  41.     }  
class Program
    {
        static void Main(string[] args)
        {
            string s1 = "所属机构名称/教师姓名/课程类型/课程名称";

            int first = s1.IndexOf("/")+1;      //第一个"/"的位置
            int second = s1.IndexOf("/", first + 1) + 1;      //第二个"/"的位置
            int third = s1.IndexOf("/", second + 1) + 1;       //第三个"/"的位置
            Console.WriteLine("第一个'/ '的位置: " + first);     //7
            Console.WriteLine("第二个'/ '的位置: " + second );    //12
            Console.WriteLine("第三个'/ '的位置: " + third );     //16

            int startIndex1 = 0;
            int length1 = first - 1;  //6--"所属机构名称"中"称"的位置
            Console.WriteLine("length1=" + length1);
            Console.WriteLine(s1.Substring(startIndex1,length1));   //所属机构名称--从第0个位置开始,6个字符
            Console.WriteLine("-------------------------------------------------");

            int startIndex2 = first ;    //7
            int length2 = (second-1) -first;       //4--"教师姓名"中"名"的位置-第一个"/"的位置
            Console.WriteLine("startIndex2=" + startIndex2);
            Console.WriteLine("length2=" + length2);
            Console.WriteLine(s1.Substring(startIndex2, length2));   //教师姓名--从第7个位置开始,4个字符
            Console.WriteLine("-------------------------------------------------");

            int startIndex3 = second  ;       //12
            int length3 = (third -1)-second ;       //4--"课程类型"中"型"的位置-第二个"/"的位置
            Console.WriteLine("startIndex3=" + startIndex3);
            Console.WriteLine("length3=" + length3);
            Console.WriteLine(s1.Substring(startIndex3, length3));   //课程类型--从第12个位置开始,4个字符
            Console.WriteLine("-------------------------------------------------");

            int startIndex4 = third ;   //17
            Console.WriteLine("startIndex4=" + startIndex4);
            Console.WriteLine(s1.Substring(startIndex4));   //课程名称--从第17个位置开始
            Console.WriteLine("-------------------------------------------------");

            
        }
    }






        Substring函数能实现字符串截取,一般和IndexOf函数一起使用。如果用Substring函数实现上面我们所需要的功能的话,逻辑有些复杂,代码太多,一不小心就容易出错。那么下一篇博客就教大家怎么用别的函数简单实现我们想要的字符串截取功能。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# 截取字符串 的相关文章

  • 动态存储和静态存储区域区别

    动态存储方式 所谓动态存储方式是指在程序运行期间根据需要进行动态的分配存储空间的方式 动态存储变量是在程序执行过程中 xff0c 使用它时才分配存储单元 xff0c 使用完毕立即释放 典型的例子是函数的形式参数 xff0c 在函数定义时并不
  • c++中默认32位int类型转换截取高位部分

    int类型的变量固定为4个字节 xff0c 共32位 int类型变量初始值一般为0 xff0c 范围 2 31 2 31 1 即 2147483648 xff0c 2147483647 16 位系统下 xff0c int 是 2 个字节 x
  • c#-接口

    c 中的接口中必须是未实现的方法 xff0c 例如属性 xff0c 事件 xff0c 索引器 xff0c 一般函数等 除此之外不能有其他的成员 xff0c 类可以继承两个或两个以上的接口 xff0c 派生类中必须实现接口中的所有方法
  • C# SerialPort 读写三菱FX系列PLC

    1 xff1a 串口初始化 com 61 new SerialPort 34 COM3 34 9600 Parity Even 7 StopBits One 2 xff1a 打开关闭串口 if com IsOpen com Close co
  • c++中用new和不用new创建对象的本质区别

    1 xff1a 作用域不同 不用new xff1a 作用域限制在定义类对象的方法中 xff0c 当方法结束时 xff0c 类对象也被系统释放了 xff0c xff08 安全不会造成内存系统泄漏 xff09 用new xff1a 创建的是指向
  • ubuntu系统通过ifconfig查看eth0只有ipv6没有ipv4的解决方案

    只有inet6 addr 配置eth0 3 重新启动sudo etc init d networking restart IP地址出来了 看起来就正常 4 看其他资料 xff0c linux 43 QT4 0 xff0c 在这个开发板上的l
  • Action<T> 无参数委托详解

    C 委托Action Action lt T gt Func lt T gt Predicate lt T gt CLR环境中给我们内置了几个常用委托Action Action lt T gt Func lt T gt Predicate
  • 在C++里,有两种方法创建对象:

    方法一 xff1a ClassName object param 这样就声明了一个ClassName类型的object对象 xff0c C 43 43 会为它分配足够的存放对象所有成员的存储空间 注意 xff1a 为节省存储空间 xff0c
  • C++中引用(&)的用法和应用实例

    对于习惯使用C进行开发的朋友们 xff0c 在看到c 43 43 中出现的 amp 符号 xff0c 可能会犯迷糊 xff0c 因为在C语言中这个符号表示了取地址符 xff0c 但是在C 43 43 中它却有着不同的用途 xff0c 掌握C
  • C++中重载与重写函数区别及虚函数(转载)

    C 43 43 中重载与重写函数区别及虚函数 C 43 43 中的虚函数 virtual function 1 简介 虚函数是C 43 43 中用于实现多态 polymorphism 的机制 核心理念就是通过基类访问派生类定义的函数 假设我
  • c#中的静态构造函数

    静态构造函数是C 的一个新特性 xff0c 其实好像很少用到 不过当我们想初始化一些静态变量的时候就需要用到它了 这个构造函数是属于类的 xff0c 而不是属于哪里实例的 xff0c 就是说这个构造函数只会被执行一次 也就是在创建第一个实例
  • C++中重写与覆写(虚函数virtual)的区别

    本文章已收录于 xff1a 虚函数的情况下调用成员函数时调用的是指向对象的所属类的成员函数例子中为apple class fruit public void func printf 34 fruit n 34 virtual void vf
  • duilib入门问题集

    引入duilib时 请确保引入头文件开始时先引入COMUTIL H头文件 include 34 COMUTIL H 34 include 34 UIlib h 34 duilib基本程序结构 在stdafx h文件中加入 cpp view
  • C#中常用的几种读取XML文件的方法

    XML文件是一种常用的文件格式 xff0c 例如WinForm里面的app config以及Web程序中的web config文件 xff0c 还有许多重要的场所都有它的身影 Xml是Internet环境中跨平台的 xff0c 依赖于内容的

随机推荐

  • C++(1) 指针 new 和delete

    1 概念 new typeName pointer name 61 new typeName delete delete pointer name 注意 xff1a 1 new之后要判断 xff0c 指针是否为NULL xff0c 内存被耗
  • C++的new

    C 43 43 中的new其实是一个很糊弄人的术语 xff0c 它有两种不同的含义 xff0c new运算符 xff08 new operator xff09 和new函数 xff08 operator new xff09 xff0c 值得
  • s32ds

    S32DS使用复位窗口的方式还原 xff1a 在S32DS菜单栏 Windows Perspective Reset Perspective 添加组件 xff0c 自动生成代码 xff1a
  • 在C#中使用SerialPort类实现串口通信 遇到多线程问题

    在C 中使用SerialPort类实现串口通信 遇到多线程问题 在C 中使用SerialPort类实现串口通信 2009年11月01日 星期日 10 03 在 NET work 2 0中提供了SerialPort类 xff0c 该类主要实现
  • [C#]委托和事件(详细讲解)

    引言 委托 和 事件在 Net Framework中的应用非常广泛 xff0c 然而 xff0c 较好地理解委托和事件对很多接触C 时间不长的人来说并不容易 它们就像是一道槛儿 xff0c 过了这个槛的人 xff0c 觉得真是太容易了 xf
  • 连接excel执行Insert Into语句出现“操作必须使用一个可更新的查询”的解决

    C 使用oledb连接excel执行Insert Into语句出现 操作必须使用一个可更新的查询 的解决办法 我发生错误时的环境 xff1a Windows 7 xff0c Framework 4 0 xff0c Microsoft Off
  • 操作excel的一些方法

    更改方法 xff1a public void UpdateExcelFile string filePath string prjId List lt string gt updateColNames List lt string gt c
  • C#中如何创建文件夹

    C 中对文件夹操作需要用到Directory Class 其中提供了创建 删除 移动 枚举等静态方法 该类不能被继承 以下代码实现了创建文件夹 1 2 3 4 if Directory Exists sPath
  • C#获取当前程序运行路径的方法集合

    获取当前进程的完整路径 xff0c 包含文件名 进程名 string str 61 this GetType Assembly Location result X xxx xxx xxx exe exe文件所在的目录 43 exe文件名 获
  • 怎么将excel数据导入到datagridview中

    本人小白 xff0c 想要实现EXCEL文件中的数据导入到datagridview中 xff0c EXCEL中的数据是多行多列 xff0c 行数和列数不确定 xff0c 如何实现导入到datagridview中显示 xff0c 具体的界面如
  • 总结了C#中string.format用法。分享给大家供大家参考。具体分析如下:

    String Format 方法的几种定义 xff1a String Format String Object 将指定的 String 中的格式项替换为指定的 Object 实例的值的文本等效项 String Format String O
  • c#中out、ref和params的用法与区别

    ref和out都对函数参数采用引用传递形式 不管是值类型参数还是引用类型参数 xff0c 并且定义函数和调用函数时都必须显示生命该参数为 ref out形式 两者都可以使函数传回多个结果 两者区别 xff1a 两种参数类型的设计思想不同 x
  • C#代码创建Xml文件

    扩展标记语言XML xff08 eXtensible Markup Language xff09 xff0c 是由W3C组织制定的 做为用于替代HTML语言的一种新型的标记语言 xff0c XML内部有着很多基本标准 xff0c XML就是
  • tftp使用

    tftp服务器路径 xff1a tftp使用命令 xff1a root 64 iTOP 4412 tftp g l module test ko 169 254 231 181 3356 761790 dm96 TxRound 0 for
  • 获取某一扩展名的文件集合

    获取某一扩展名的文件集合 lt summary gt lt param name 61 34 dictoryName 34 gt 目录名 lt param gt lt param name 61 34 fiterName 34 gt 扩展名
  • 使用XmlTextWriter生成XML文件的方法

    使用XmlTextWriter生成XML文件的方法 项目兼容需要生成一系列的xml文件 xff0c 总结了下XML文件的生成基本方式 项目兼容需要生成一系列的xml文件 xff0c 总结了下XML文件的生成基本方式 XmlTextWrite
  • datatable数据类型方法

    本文章已收录于 xff1a 43 Datatable数据类型介绍 简介方法介绍 用法一声明一个datatable类型用法二合并两个结构相同的datatable用法三datatable中数据的计算用法四两种遍历datatable的方法 Dat
  • C#字符串常见操作总结详解

    C 字符串常见操作总结详解 本篇文章是对C 中字符串的常见操作进行了详细的总结介绍 xff0c 需要的朋友参考下 xff08 1 xff09 取字符串长度 lt string gt Length xff08 2 xff09 字符串转为比特码
  • c#读取string类型的xml格式的字符串

    string str 61 lt resultInfo code 61 34 202 34 message 61 34 原密码输入不正确 xff01 34 gt XmlDocument xmlDoc 61 new XmlDocument x
  • C# 截取字符串

    本文章已收录于 xff1a str为要进行截取的字符串 start是第一个关键字 字符串 last是第二个关键字 字符串 public string GetContent string str string start string las