专栏首页跟着阿笨一起玩NETC#截取指定字符串函数

C#截取指定字符串函数

本文转载:http://www.cnblogs.com/liufei88866/archive/2012/05/12/2497395.html

一、通过函数方式进行获取。

public 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

}

注意:获取前区的关键字不能为空!

eg:字符串:str=“luaikawa sent a message about Black Mini 3.5CH Channel Alloy Metal Helicopter Gyro RC Radio Remote Control Toy #190879181686”

错误写法:GetContent(str, “”, “sent a message about”, 8) 返回值为空字符串

正确写法:GetContent(str,  “sent a message about”, “”,8) 返回值为luaikawa

二、通过正则表达式方法:即取出以单词begin开头和单词end结尾之间的字符串

用正则表达式获取指定的字符串:http://www.cnblogs.com/Stwo/archive/2011/08/29/2158260.html

eg:Other:mrjohnnymars sent a message about Antiqued Collar Clip Punk Blouse Shirt Metal Gold Red Black Blue Tips Pin Brooch #370926469688

Regex:(?<=:)([.\S\s]*)(?=sent a message about)

C# 用正则表达式获取开始和结束字符串中间的值

/// <summary>
/// 获得字符串中开始和结束字符串中间得值
/// </summary>
/// <param name="str">字符串</param>
/// <param name="s">开始</param>
/// <param name="e">结束</param>
/// <returns></returns> 
public static string GetValue(string str, string s, string e)
{
Regex rg = new Regex("(?<=(" + s + "))[.\\s\\S]*?(?=(" + e + "))", RegexOptions.Multiline | RegexOptions.Singleline);
return rg.Match(str).Value;
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • C#.bat文件清理工程目录

    跟着阿笨一起玩NET
  • C#字符串、字节数组和内存流间的相互转换

    跟着阿笨一起玩NET
  • C#操作操作类库五(字符串的常用扩展方法)

    跟着阿笨一起玩NET
  • 【每天一道编程系列-2018.2.22】(Ans)

      Implement atoi to convert a string to an integer.    Hint: Carefully consider ...

    yesr
  • ini_set()函数的使用 以及 post_max_size,upload_max_filesize的修改方法

    Apache服务器处理: ini_set('display_errors', 'Off'); ini_set('memory_limit', -1); //-1...

    joshua317
  • Coderbyte-Challenger之Letter Capitalize(单词字母大写)

    Have the function LetterCapitalize(str) take the str parameter being passed and...

    chain
  • js去掉字符串前后空格的五种方法

    第一种:循环检查替换 [javascript] //供使用者调用   function trim(s){   return trimRight(trimLeft...

    joshua317
  • LeetCode刷题DAY 13:字符串转换整数

    本次给定一个字符串,按照一定规则将其中字符串转换为整数。规则叙述较为繁琐,因此借用一下官方解题中的一幅图来说明规则:

    三猫
  • 【Codeforces】1230B - Ania and Minimizing

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

    喜欢ctrl的cxk
  • Python 计算质数提升

    今天在做 Python 学习的时候,发现自己对于代码的递归和循环的控制,还有实现编程的思考太过简单了,一道简单的编程题,浪费掉了我很多的时间才完成,真的是太不应...

    zucchiniy

扫码关注云+社区

领取腾讯云代金券