C#截取的字符串

本文介绍了一种实用的字符串截取方法,通过指定起始和结束关键字及不同的截取模式,灵活地从输入字符串中提取所需片段。支持多种截取方式,包括包含或去除关键字。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

         /// <summary>
        /// str为要进行截取的字符串,start是第一个关键字(字符串),last是第二个关键字(字符串),n截取字符串方式  
        /// </summary>
        /// <param name="str"></param>
        /// <param name="start"></param>
        /// <param name="last"></param>
        /// <param name="n"></param>
        /// <returns></returns>
        public static string GetContent(string str, string start, string last, int n)
        {
            if (str.ToLower().IndexOf(start.ToLower()) >= 0)
            {
                if (str.ToLower().IndexOf(last.ToLower()) >= 0)
                {
                    switch (n)
                    {
                        //左右都截取(都取前面)(包含关键字)       
                        case 1: str = str.Substring(str.ToLower().IndexOf(start.ToLower()), str.Length - str.ToLower().IndexOf(start.ToLower()));
                            str = str.Substring(0, str.ToLower().IndexOf(last.ToLower()) + last.Length); break;
                        //左右都截取(都取前面)(去除关键字)                    
                        case 2: str = str.Substring(str.ToLower().IndexOf(start.ToLower()) + start.Length, str.Length - str.ToLower().IndexOf(start.ToLower()) - start.Length);
                            str = str.Substring(0, str.ToLower().IndexOf(last.ToLower())); break;
                        //左右都截取(都取后面)(包含关键字)                    
                        case 3: str = str.Substring(str.ToLower().LastIndexOf(start.ToLower()), str.Length - str.ToLower().LastIndexOf(start.ToLower()));
                            str = str.Substring(0, str.ToLower().LastIndexOf(last.ToLower()) + last.Length); break;
                        //左右都截取(都取后面)(去除关键字)                    
                        case 4: str = str.Substring(str.ToLower().LastIndexOf(start.ToLower()) + start.Length, str.Length - str.ToLower().LastIndexOf(start.ToLower()) - start.Length);
                            str = str.Substring(0, str.ToLower().LastIndexOf(last.ToLower())); break;
                        //左右都截取(一前一后)(包含关键字)                      
                        case 5: str = str.Substring(str.ToLower().IndexOf(start.ToLower()), str.Length - str.ToLower().IndexOf(start.ToLower()));
                            str = str.Substring(0, str.ToLower().LastIndexOf(last.ToLower()) + last.Length); break;
                        //左右都截取(一前一后)(去除关键字)                      
                        case 6: str = str.Substring(str.ToLower().IndexOf(start.ToLower()) + start.Length, str.Length - str.ToLower().IndexOf(start.ToLower()) - start.Length);
                            str = str.Substring(0, str.ToLower().LastIndexOf(last.ToLower())); break;
                        default: str = ""; break;
                    }
                }
                else
                {
                    switch (n)
                    {
                        //只往左截取(取前面的)(包含关键字)           
                        case 7: str = str.Substring(0, str.ToLower().IndexOf(start.ToLower()) + start.Length); break;
                        //只往左截取(取前面的)(去除关键字)                    
                        case 8: str = str.Substring(0, str.ToLower().IndexOf(start.ToLower())); break;
                        //只往左截取(取后面的)(包含关键字)                   
                        case 9: str = str.Substring(0, str.ToLower().LastIndexOf(start.ToLower()) + start.Length); break;
                        //只往左截取(取后面的)(去除关键字)                  
                        case 10: str = str.Substring(0, str.ToLower().LastIndexOf(start.ToLower())); break;
                        //只往右截取(取前面的)(包含关键字)                    
                        case 11: str = str.Substring(str.ToLower().IndexOf(start.ToLower()), str.Length - str.ToLower().IndexOf(start.ToLower())); break;
                        //只往右截取(取前面的)(去除关键字)                  
                        case 12: str = str.Substring(str.ToLower().IndexOf(start.ToLower()) + start.Length, str.Length - str.ToLower().IndexOf(start.ToLower()) - start.Length); break;
                        //只往右截取(取后面的)(包含关键字)                    
                        case 13: str = str.Substring(str.ToLower().LastIndexOf(start.ToLower()), str.Length - str.ToLower().LastIndexOf(start.ToLower())); break;
                        //只往右截取(取后面的)(去除关键字)                     
                        case 14: str = str.Substring(str.ToLower().LastIndexOf(start.ToLower()) + start.Length, str.Length - str.ToLower().LastIndexOf(start.ToLower()) - start.Length); break;
                        default: str = "无"; break;
                    }
                }
            }
            else
            {
                str = "无!";
            }
            return str;
        } 
### C# 截取字符串的方法与示例 在 C# 中,可以使用多种方法来截取字符串的一部分。以下是几种常见的方法及其代码示例: #### 方法一:使用 `Substring` 方法 `Substring` 是 C# 中最常用的字符串截取方法之一。可以通过指定起始索引和要截取的字符数来获取子字符串。 ```csharp string str = "Hello World"; string result = str.Substring(0, 5); // 从索引为0的位置开始截取截取5个字符 Console.WriteLine(result); // 输出 "Hello" ``` 上述代码展示了如何通过 `Substring` 方法截取字符串的一部分[^1]。 #### 方法二:使用 `Split` 方法 如果需要根据特定分隔符将字符串拆分为多个部分,可以使用 `Split` 方法。这种方法适用于字符串包含分隔符的情况。 ```csharp string str = "GTAZB_JiangjBen_123"; string[] sArray = str.Split(new string[] { "Ji", "jB" }, StringSplitOptions.RemoveEmptyEntries); foreach (string e in sArray) { Console.WriteLine(e); } ``` 此代码片段展示了如何通过自定义分隔符(如 `"Ji"` 和 `"jB"`)将字符串分割为数组[^2]。 #### 方法三:使用正则表达式 正则表达式是一种强大的工具,可以用于复杂模式匹配和字符串提取。 ```csharp using System.Text.RegularExpressions; string str = "GTAZB_JiangjBen_123"; Match match = Regex.Match(str, @"(?<=_)[^_]+(?=_)"); if (match.Success) { Console.WriteLine(match.Value); // 输出 "JiangjBen" } ``` 这段代码利用正则表达式提取了两个下划线 `_` 之间的子字符串[^4]。 #### 方法四:结合 LINQ 处理字符串 LINQ 提供了灵活的方式来处理集合数据,也可以应用于字符串操作。 ```csharp using System.Linq; string str = "GTAZB_JiangjBen_123"; var result = new string(str.Take(6).ToArray()); Console.WriteLine(result); // 输出 "GTAZB_" ``` 这里通过 `Take` 方法选取了字符串的前六个字符,并将其转换为新字符串[^5]。 --- ### 总结 C# 提供了多种截取字符串的方法,包括但不限于 `Substring`、`Split`、正则表达式以及 LINQ 等。每种方法都有其适用场景,选择合适的方法可以提高代码的可读性和效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值