.NET-提取字符串实践总结
前阶段工作时遇到一个截取字符串的问题,由于字符串比较长,大概得几万字符吧(XML形式),要提取中间两个节点之间的内容,在网上费了好大功夫才找到能用的正则。工作当用的时候碰到这样的事最蛋疼了,网上的资源虽多,但是要筛选,既费时又费心,还烦躁。
现在得闲了,就为大家总结一下.NET截取字符串的方法,为了直观起见,我把每个方法用控制台演示一下,不足请补充,不好请见谅哈。
①string.Substring
这个方法地球人都知道了,但是为了刚入门的小弟小妹看的直观,我写个超简单的代码运行一下:
string str = "abcdefghijk";
string subStr = str.Substring(, );
Console.Write(subStr);
Console.ReadKey();
结果:abcde,见下图:

第一个参数是开始截取的索引(记住以0开始),第二个参数是截取的字符串长度。
特殊的,比如说截取最后三个字符:
string str = "abcdefghijk";
string subStr = str.Substring(str.Length - , );
Console.Write(subStr);
Console.ReadKey();
结果:ijk,见下图:

实际就是变化一下思维。
Substring经常和indexof函数配合使用,活学活用,没事可以搜搜相关的资料,最好能实践一下,加深印象。
②string.Split
Split函数可以来截取带有特殊字符的字符串,比如说有个时间格式是这样的时间:2014-2-8,我要把它的年月日分别拿出来,你可以使用常规方法,也可以用Split函数:
string str = "2014-2-8";
string[] stArray = str.Split(new char[] { '-' });
string subStrYear = stArray[];
string subStrMonth = stArray[];
string subStrDay = stArray[];
Console.Write(subStrYear);
Console.Write("\n");
Console.Write(subStrMonth);
Console.Write("\n");
Console.Write(subStrDay);
Console.ReadKey();
结果:

如果有多个特殊字符,比如:aa-bb-cc|dd|ee|ff,把Split参数换成new char[2] { ‘-’,’|’ }即可。
Split函数还可以和正则表达式一起使用截取字符串:
string str = "韦---德--你------真-棒";
string[] strArray = System.Text.RegularExpressions.Regex.Split(str1, @"\-+");
foreach (string i in strArray)
Console.Write(i.ToString());
Console.ReadKey();
结果:

③正则表达式:
首先提醒下,使用正则表达式需引用命名空间:System.Text.RegularExpressions;
正则表达式用处广泛,截取个字符串什么的当然不在话下,在网上随便一搜,眼花缭乱的,但是到底能不能用,还得自己亲力亲为一下,自己试过能用才是真的能用。下面是我找了几个能用的正则演示一下:
1."(?<=(‘截取开始位置’))[.\\s\\S]*?(?=(‘截取结束位置’))"
string str = "aabbccdd<Msg>This is I want</Msg>eeffgghh";
string subStart = "<Msg>";
string subEnd = "</Msg>";
Regex MsgRegex = new Regex("(?<=(" + subStart + "))[.\\s\\S]*?(?=(" + subEnd + "))", RegexOptions.Multiline | RegexOptions.Singleline);
Match MsgMc = MsgRegex.Match(str);
string subString = MsgMc.Groups[].Value;
Console.Write(subString);
Console.ReadKey();
结果:

2."(?i)(?<=截取开始位置)[^\"]*(?=截取结束位置)"
string str = "aabbccdd<Msg>This is I want again</Msg>eeffgghh";
Match MsgMc = Regex.Match(str, "(?i)(?<=<Msg>)[^\"]*(?=</Msg>)");
string subString = MsgMc.Groups[].Value;
Console.Write(subString);
Console.ReadKey();
结果:

就举这两个例子吧,我不会写,也不好找。不会写得学啊,我在CSDN碰到了一个正则的大神推荐给大家,大家可以到他的空间学习:
在这些方法的基础上再拓展和举一反三,应付截取字符串的工作应该问题不大了。好了,不早了,洗洗睡了。
.NET-提取字符串实践总结的更多相关文章
- 字串符相关 split() 字串符分隔 substring() 提取字符串 substr()提取指定数目的字符 parseInt() 函数可解析一个字符串,并返回一个整数。
split() 方法将字符串分割为字符串数组,并返回此数组. stringObject.split(separator,limit) 我们将按照不同的方式来分割字符串: 使用指定符号分割字符串,代码如 ...
- 使用Java正则表达式提取字符串中的数字一例
直接上代码: String reg = "\\D+(\\d+)$"; //提取字符串末尾的数字:封妖塔守卫71 == >> 71 String s = monster. ...
- C++ 提取字符串中的数字
C++ 提取字符串中的数字 #include <iostream> using namespace std; int main() { ] = "1ab2cd3ef45g&quo ...
- 提取字符串substring()
substring() 方法用于提取字符串中介于两个指定下标之间的字符. 语法: stringObject.substring(startPos,stopPos) 参数说明: 注意: 1. 返回的内 ...
- fortran中提取字符串中可见字符的索引
fortran中常常需要提取字符串中可见字符的索引,下面是个小例子: !============================================================= su ...
- Swift3 Scanner用法之判断是否数字、提取字符串里的数字
1.判断是否数字 /// 判断是否是数字 /// /// - Parameter string: <#string description#> /// - Returns: <#re ...
- R语言提取字符串的一部分substring函数
这个函数提取字符串的一部分. 语法 substring()函数的基本语法是: substring(x,first,last) 以下是所使用的参数的说明: x - 是字符向量输入. first - 是第 ...
- PHP提取字符串中的手机号正则表达式怎么写
0. 简介 PHP通过正则表达式提取字符串中的手机号并判断运营商,简单快速方便,能提取多个手机号. 1. 代码 <?php header("content-type:text/plai ...
- 编程提取字符串"Java is a programming language"中的各个单词,并打印输出。
import java.lang.String; import java.util.StringTokenizer; public class StringGetWord{ /* 编程提取字符串&qu ...
- JS中substring()方法(用于提取字符串中介于两个指定下标之间的字符)
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
随机推荐
- POJ C++程序设计 编程题#1 编程作业—继承与派生
编程题#1 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 65536kB 描述 写一个MyStr ...
- css3 2d
CSS3 2D 转换 通过 CSS3 转换,我们能够对元素进行移动.缩放.转动.拉长或拉伸. 以下是 2D 转换 1 translate()通过 translate() 方法,元素从其当前位置移动 ...
- web.xml中的url-pattern映射规则
Servlet和filter是J2EE开发中常用的技术,使用方便,配置简单.servlet和filter中的url-pattern有一些文章在里面的,总结了一些东西,以免遇到问题又要浪费时间. 一,s ...
- WCF全面解析第一章 WCF 简介
1.WCF中的 "A","B","C" 介绍 我们先看个生活中的例子,某一天,公司的领导让你去送一份合同文件,送文件的过程你可以选择的交通方 ...
- MySQL自用脚本(不定期更新)
查询指定SQL的trace信息 mysql -uUSER -pPWD -hHOST -e "\ use ins_tc_prd; \ set session optimizer_trace=' ...
- 简单翻译和补充:1. GNU ARM Eclipse
原文链接: GNU ARM Eclipse GNU 介绍: GNU 计划,又称革奴计划,是由RichardStallman在1983年9月27日公开发起的.它的目标是创建一套完全自由的操作系统.Ric ...
- 从一个标准URL中提取文件的扩展名
例如:http://www.sina.cn/abc/de.php?id=1 提出php 1. $url = 'http://www.sina.cn/abc/de.php?id=1'; $arr = ...
- openSUSE13.1无法打开Yast的安装/移除软件管理软件的解决办法·(未解决,临时方法) 收获:有问题,读日志
看了日志发现错误在于Ruby,新的YaST是基于Ruby的,而我用rvm安了新版本Ruby,日志里这么出错: 2014-08-22 20:20:57 <3> linux-vfpp.site ...
- WPF:定制Checkbox样式,让“正确”绿得好看,让“错误”红的显眼
WPF提供了样式.模板.触发器.状态管理.矢量形状等方式,让我们不需要背景图片,也可以轻松定制控件的风格样式.下面是笔者针对Checkbox进行的样式定制,让“正确”绿得好看,让“错误”红的显眼. ...
- DTW
DTW主要是应用在孤立词识别的算法,用来识别一些特定的指令比较好用,这个算法是基于DP(动态规划)的算法基础上发展而来的.这里介绍语音识别就先介绍下语音识别的框架,首先我们要有一个比对的模版声音,然后 ...