A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 李小熊 于 2013-10-21 13:32 编辑

看视频课,截取字符串有几种方法,我最常用的是split 和substring。
请教下还有没有其他更常用的方法,及其用法。
split将字符串分割成数组。
string   s="1233456"
string[] arr=s.split('2');

indexof 是获取指定得字符或者字符串的位置。

substring 截取字符串 substring我用的不熟练。想让大家看看有没有错误

substring(int a)如果只有一个参数a,就是从一个字符串的第a个截取到字符串结束。
substring(int a,intb)如果2个参数a和b,就是从一个字符串的第a个截取b个字符。一定不要超过字符串的长度

评分

参与人数 1技术分 +1 收起 理由
haxyek + 1 传头像,得技术分

查看全部评分

8 个回复

倒序浏览
C#几个经常用到的字符串的截取
string str="123abc456";
int i=3;
1 取字符串的前i个字符
   str=str.Substring(0,i); // or  str=str.Remove(i,str.Length-i);
2 去掉字符串的前i个字符:
   str=str.Remove(0,i);  // or str=str.Substring(i);
3 从右边开始取i个字符:
  str=str.Substring(str.Length-i); // or str=str.Remove(0,str.Length-i);
4 从右边开始去掉i个字符:
   str=str.Substring(0,str.Length-i); // or str=str.Remove(str.Length-i,i);
5 判断字符串中是否有"abc" 有则去掉之
   using System.Text.RegularExpressions;
   string str = "123abc456";
   string a="abc";
   Regex r = new  Regex(a);
   Match m = r.Match(str);
   if (m.Success)
   {
    //下面两个取一种即可。
      str=str.Replace(a,"");
      Response.Write(str);   
      string str1,str2;
      str1=str.Substring(0,m.Index);
      str2=str.Substring(m.Index+a.Length,str.Length-a.Length-m.Index);
      Response.Write(str1+str2);
   }
6 如果字符串中有"abc"则替换成"ABC"
   str=str.Replace("abc","ABC");

评分

参与人数 1技术分 +1 收起 理由
haxyek + 1

查看全部评分

回复 使用道具 举报 1 0
1, 去掉字符串的前几个字符:
str = str.remove(0,i);
str = str.substring(i);
2从右边开始截取字符
str = str.substring(str.length-i);
3 替换
str = str.replace("aa","AA");
4 截取最后一个
a = a.substring(a.length-1,1);
`````````
5  现就这样吧·······{:soso__3669389859068460655_3:}

评分

参与人数 1技术分 +1 收起 理由
haxyek + 1

查看全部评分

回复 使用道具 举报
你可以试着自己实现一个substring,把字符串转换成字符数组,然后根据接受的索引值处理之,最后输出
回复 使用道具 举报
首先感谢楼主的提问 截取字符串的方法就只有substring 然而split是分割字符串
首先说说substring吧 substring是用于字符串类型的数据的截取 返回类型为string 本身具有两个重载方法 第一个:直接指定截取开始的位置 也就是字符串中字符所在的下标 作用是从你所指定的位置开始截取一直到字符串长度结束 第二个:指定开始的位置和长度 作用就是返回用户所指定开始位置和从开始位置开始计算长度所产生的字符串中的新字符串
在字符串的截取中 我们可以配合着使用 indexof 或者是lastindexof 这两个的作用就是查找你所指定的参数所在的位置 indexof‘是查找第一个位置 lastindexOf是查找最后一个位置
现在说一下split split是分割字符串返回字符串数组 可以直接指定你想要分割的字符 或者是char数组和string数组 还有一个备选的属性就是StringSplitOptions.RemoveEmptyEntries 这个的作用是除空白

评分

参与人数 1技术分 +1 收起 理由
haxyek + 1

查看全部评分

回复 使用道具 举报
string[] Split(params char[] separator):将字符串按照指定的分割符分割为字符串数组;
string[] Split(char[] separator, StringSplitOptions options)将字符串按照指定的char分割符分割为字符串数组( options 取RemoveEmptyEntries的时候移除结果中的空白字符串);
string[] Split(string[] separator, StringSplitOptions options)将字符串按照指定的string分割符分割为字符串数组。
字符串替换:string Replace(string oldValue, string newValue)将字符串中的出现oldValue的地方替换为newValue。例子:名字替换。
取子字符串:string Substring(int startIndex),取从位置startIndex开始一直到最后的子字符串;
string Substring(int startIndex, int length),取从位置startIndex开始长度为length的子字符串,如果子字符串的长度不足length则报错。
bool Contains(string value)判断字符串中是否含有子串value
bool StartsWith(string value)判断字符串是否以子串value开始;
bool EndsWith (string value)判断字符串是否以子串value结束;
int IndexOf(string value):取子串value第一次出现的位置。

评分

参与人数 2技术分 +1 黑马币 +2 收起 理由
haxyek + 1
李小熊 + 2

查看全部评分

回复 使用道具 举报
本帖最后由 ィSlick 于 2013-10-19 16:06 编辑

String substring(int beginIndex)
String substring(int beginIndex, int endIndex)

String.Substring (Int32)         子字符串从指定的字符位置开始。
String.Substring (Int32, Int32) 子字符串从指定的字符位置开始且具有指定的长度。
举例如下:
             string s = "Hello C# World!";

             //s1为从s中截取的位置为3的字符以后的字符子串,3表示子字符串的起始字符位置
            string s1=s.Substring(3);
             //s2为从s中截取的位置为6的字符开始长度为2的字符串,6表示子字符的起始字符位置,2表示子字符长度
            string s2 = s.Substring(6, 2);
结果如下:
lo C# World!
C#


int indexOf(String str) 返回第一次出现的指定子字符串在此字符串中的索引。
int indexOf(String str, int fromIndex) 从指定的索引处开始,返回第一次出现的指定子字符串在此字符串中的索引。

int lastIndexOf(String str) 返回在此字符串中最右边出现的指定子字符串的索引。
int lastIndexOf(String str, int fromIndex) 从指定的索引处开始向后搜索,返回在此字符串中最后一次出现的指定子字符串的索引。
int length() 返回此字符串的长度。

boolean startsWith(String prefix) 测试此字符串是否以指定的前缀开始。
boolean startsWith(String prefix, int toffset) 测试此字符串是否以指定前缀开始,该前缀以指定索引开始。
例如:
         string  str=        "C:\\Documents and Settings\\Administrator\\桌面\\new1.jpg"
str.Substring(0,str.LastIndexOf("\\")+1)+"new"+str.Substring(str.LastIndexOf("\\")+1,
  str.LastIndexOf(".")-str.LastIndexOf("\\")-1)+str.Substring(str.LastIndexOf("."),str.Length-str.LastIndexOf(".")


str.LastIndexOf("\\")——得到最后一个“\\”的索引值
str.Substring(0,str.LastIndexOf("\\")+1)——得到  C:\\Documents and Settings\\Administrator\\桌面\\
str.Substring(str.LastIndexOf("\\")+1,str.LastIndexOf(".")-str.LastIndexOf("\\")-1)  ——得到 new1
str.Substring(str.LastIndexOf("."),str.Length-str.LastIndexOf(".") ——得到 .jpg

int endIndex =str.IndexOf("e");

string toStr = str.SubString(indexStart,endIndex-indexStart);

c#截取字符串最后一个字符的问题!

str1.Substring(str1.LastIndexOf(",")+1);

C# 截取字符串最后一个字符

k = k.Substring(k.Length-1, 1);

评分

参与人数 1技术分 +2 收起 理由
追溯客 + 2

查看全部评分

回复 使用道具 举报
这是我总结的一些
* 计算字符串的长度*

string myString = "This is a test!";

Console.WriteLine("Text is :{0}",myString);

Console.WriteLine("Text's long is :{0}",myString.Length);

* 转换大小写*

myString = myString.ToLower(); //

所有字符转换成小写



myString = myString.ToUpper(); //

所有字符转换成大写

* 删除前后空*

myString = myString.Trim(); //

同时删除字符串前后的空格



char[] trimChars = {' ','e','s'}; //

准备删除的字符



myString = myString.Trim(trimChars); //

删除所有指定字符



myString = myString.TrimEnd(); //

删除字符串后的空格



myString = myString.TrimStart(); //

删除字符串前的空格

* 添加空格*

myString = myString.PadRight(14,' '); //

当字符串长度不够14位时,在他的右边用指定字符填充



myString = myString.PadLeft(14,' '); //

当字符串长度不够14位时,在他的左边用指定字符填充

* 拆分字符串*

string[] nStrs = myString.Split(' ',3); //

按照空格进行拆分,并且返回前三个字符串



* 获取子字符串*

string a = myString.Substring(2,2);

//从myString

字符串的第三位开始获取两个字符,因为索引


起始位是0

* 替换字符串中的字符*

string a = myString.Replace("i","o"); //

将这个字符串中的所有

“i”替换成“o”

评分

参与人数 1技术分 +2 收起 理由
追溯客 + 2

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马