C#字符串操作,转自韩迎龙博客
1.1 字符串大小写
方法原型
string <strName>.ToUpper(); //返回字符串转换的大写形式
string <strName>.ToLower(); //返回字符串转换的小写形式
例如:用户在输入用户名的时候,可能会大小写输入混乱,但是我们可以转换(全部转换为大写或者全部转化为小写)一下,
使用户也能够登录成功
Console.Write("请您输入用户名:");
//全部转换为大写
string username = Console.ReadLine();
string usernameupper = username.ToUpper();
//全部转换为小写
string usernamelower = username.ToLower();
Console.WriteLine("大写是:{0},小写是:{1}", usernameupper, usernamelower);
1.2 移除首尾指定字符
Trim 移除一组指定字符的首尾匹配项
方法原型
(1)string <strName>.Trim(); //移除首尾的空格
string str = " 韩迎龙 ";
string firstendnullstr = str.Trim();
Console.WriteLine(firstendnullstr.Length); 输出信息:3
(2)string <strName>.Trim(new char[]{'<char>'}); //移除首尾指定的字符(必须是首尾的字符)
string str = "韩迎龙韩";
string firstendnullstr = str.Trim(new char[] { '韩' });
Console.WriteLine(firstendnullstr); 输出信息:迎龙
TrimStart 移除一组指定字符的开头匹配项
方法原型
(1)string <strName>.TrimStart(); //移除开头的空格
string str = " 韩迎龙 ";
string firstendnullstr = str.TrimStart();
Console.WriteLine(firstendnullstr.Length); 输出信息:4
(2)string <strName>.TrimStart(new char[]{'<char>'}); //移除开头指定的字符
string str = "韩迎龙韩";
string firstendnullstr = str.TrimStart(new char[] { '韩' });
Console.WriteLine(firstendnullstr); 输出信息:迎龙韩
TrimEnd 移除一组指定字符的结尾指定项
方法原型
(1)string <strName>.TrimEnd(); //移除结尾的空格
string str = " 韩迎龙 ";
string firstendnullstr = str.TrimEnd();
Console.WriteLine(firstendnullstr.Length); 输出信息:4
(2)string <strName>.TrimEnd(new char[]{'<char>'});
string str = "韩迎龙韩";
string firstendnullstr = str.TrimEnd(new char[] { '韩' });
Console.WriteLine(firstendnullstr); 输出信息:韩迎龙
1.3 字符串的比较
Compare()方法
方法原型
(1) int Compare(String,String); //比较两个字符串对象
int strCompare=string.Compare("sFsFsF","Sfsfsf"); //输出信息:0
(2) int Compare(string,String,Boolean) //比较两个字符串对象,是否忽略大小写
int int dou = string.Compare("sdsSD", "sdsSd", true); //输出信息:0
(3) int Compare(String,String,StringComparison) //参数指定比较是使用当前区域性还是固定区域性,
是考虑还是忽略大小写,是使用字排序规则还是序号排序规则。
int dou = string.Compare("dsdssdD", "dsdssdd", StringComparison.OrdinalIgnoreCase); //输出信息0
按照字典排序进行比较
如果strA>StrB,则返回的值大于0
如果strA=strB,则返回的值等于0
如果strA<strB,则返回的值小于0
CompareOrdinal()方法,通过计算每个字符串中相应Char对象的数值来比较
方法原型
(1)int CompareOrdinal(String,String) //通过计算每个字符串中相应的Char对象的数值来比较两个字符串
int dou = string.CompareOrdinal("a", "c"); //输出结果是:-2
也是按照字典排序
如果strA>StrB,则返回的值大于0
如果strA=strB,则返回的值等于0
如果strA<strB,则返回的值小于0
CompareTo()方法,将此实例与指定对象或者String进行比较,并且返回二者相对值的指示
方法原型
(1) int CompareTo(Object); //将此实例与object进行比较
MyClass my = new MyClass();
string s = "sometext";
try
{
int i = s.CompareTo(my);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
public class MyClass { }
//输出结果是:对象的类型必须是string类型
(2) int CompareTo(string); //将此实例与string进行比较
string str = "a";
int s = str.CompareTo("c"); //输出结果是-1
也是按照字典排序
如果strA>StrB,则返回的值大于0
如果strA=strB,则返回的值等于0
如果strA<strB,则返回的值小于0
Equals()方法,确定两个String对象是否具有相同的值
方法原则
(1)bool Equals(Object); 确定此String实例是否与指定的对象具有相同的值
StringBuilder sb = new StringBuilder("abcd");
String str1 = "abcd";
Console.WriteLine(str1.Equals(sb));
输出结果:False
(2)bool Equals(String); 确定此实例是否与另一个指定的String对象具有相同的值
string str1 = "abcd";
Console.WriteLine(str1.Equals("abcd"));
//输出结果是True
(3)bool Equals(String,String) 确定两个指定的String对象是否具有相同的值
Console.Write(string.Equals("1234", "1234"));
//输出结果是True
(4)bool Equals(String,StringComparison) 确定此字符串是否与指定的 String 对象具有相同的值。
参数指定区域性、大小写以及比较所用的排序规则。
string str="HanYingLong";
Console.WriteLine(str.Equals("hanyinglong", StringComparison.OrdinalIgnoreCase));
//输出结果是True
(5)bool Equals(String,String,StringComparison) 确定两个指定的 String 对象是否具有同一值。
参数指定区域性、大小写以及比较所用的排序规则。
//Console.WriteLine(string.Equals("AdssdS", "adssds", StringComparison.OrdinalIgnoreCase));
输出结果True
返回值是bool类型,所以我们能够判断出来如果结果相等的话就返回True,否则返回False
注释:如果仅仅比较两个字符串是否相等,还是使用"=="比较简单
Console.WriteLine("请输入一个字符串");
string str1 = Console.ReadLine();
Console.WriteLine("请输入第二个字符串");
string str2 = Console.ReadLine();
// 不考虑大小写的比较
bool isEqual = str1.ToLower() == str2.ToLower();
1.4 字符串的合并和分割
合并Join方法:在指定 String 数组的每个元素之间串联指定的分隔符 String,从而产生单个串联的字符串。
方法原型
详细介绍:将数组strArr中的内容拼接成一个字符串,并在对应数组的每两项间添加分隔符str
string.Join(str,strArr);
(1) string string.Join(String,String[]);
Console.WriteLine(string.Join("迎", new string[] { "韩", "龙","我" }));
Console.WriteLine(string.Join("迎", new char[] { '韩', '龙', '我' }));
//输出结果是:韩迎龙迎我
(2) string string.Join(String,String[],Int32,Int32)
String[] val = { "apple", "orange", "grape", "pear" };
String sep = ",";
String result = String.Join(sep, val, 1, 2);
Console.WriteLine(result);
//输出结果是orange,grape
分割Split方法:返回的字符串数组包含此实例中的子字符串
方法原型
(1)string[] Split(Char[]) //返回的字符串数组包含此实例中的子字符串
string str = "I Have a Dream";
string[] divisionstr = str.Split(new char[] { ' ' });
foreach (string s in divisionstr)
{
Console.Write(s);
}
//输出结果是:IHaveDream,去掉了空格
(2)string[] Split(Char[],Int32) //返回的字符包含此实例中的子字符串,参数指定返回的子字符串的最大数量
string str = "I Have a Dream";
string[] divisionstr = str.Split(new char[] { ' ' }, 2);
foreach (string s in divisionstr)
{
Console.Write(s);
}
//输出结果:IHave a Dream ,int count将字符串截为几段的意思
(3)string[] Split(Char[],StringSplitOptions) //返回的字符串包含此实例中的子字符串,参数指定是否
返回空数组元素
string str = " 梅西| 卡 卡|小龙 ";
string[] divisionstr = str.Split(new char[] { '|',' ' }, StringSplitOptions.RemoveEmptyEntries);
foreach (string s in divisionstr)
{
Console.Write(s);
}
//输出结果是:梅西卡卡小龙
(4)string[] Split(String[],StringSplitOptions) //返回的字符串包含此实例中的子字符串,参数指定是否
返回空数组元素
string str = "梅西|卡卡|小龙";
string[] divisionstr = str.Split(new string[] { "|" }, StringSplitOptions.RemoveEmptyEntries);
foreach (string s in divisionstr)
{
Console.Write(s);
}
//输出结果是:梅西卡卡小龙
(5)string[] Split(Char[],Int32,StringSplitOptions) //返回的字符串数组包含此字符串中的子字符串,参数
指定要返回子字符串的最大数量,以及是否要返回空数组元素。
string str = "梅西|卡卡|小龙";
string[] divisionstr = str.Split(new char[] { '|' }, 2, StringSplitOptions.RemoveEmptyEntries);
foreach (string s in divisionstr)
{
Console.Write(s);
}
//输出结果是:梅西卡卡|小龙
(6)string[] Split(String[],Int32,StringSplitOptions) //返回的字符串数组包含此字符串中的子字符串,参数
指定要返回子字符串的最大数量,以及是否要返回空数组元素。
string str = "梅西|卡卡|小龙";
string[] divisionstr = str.Split(new string[] { "|" }, 2, StringSplitOptions.RemoveEmptyEntries);
foreach (string s in divisionstr)
{
Console.Write(s);
}
//输出结果是:梅西卡卡|小龙
1.5 字符串的查找
Contains方法:返回一个值,该值指示指定的String对象是否出现在此字符串
方法原型
bool <strName>.Contains(String value); //表示字符串<strName>中是否包含value,如果包含,返回True,否则返回False
Console.Write("请输入一个字符串:");
string str = Console.ReadLine();
if (str.Contains("abc"))
{
Console.WriteLine("字符串{0}包含{1}", str, "abc");
}
else
{
Console.WriteLine("字符串{0}不包含{1}", str, "abc");
}
IndexOf方法:String或一个或多个字符在此字符串中的第一个匹配项
方法原型
(1)int <strName>.IndexOf(String) 指定字符在此字符串中的第一个匹配项的索引
string str = "让世界变得更美好";
int res = str.IndexOf("好");
Console.WriteLine(res);
//输出结果是:7
(2)int <strName>.IndexOf(String,Int32) 指定字符串中的第一个匹配项的索引,该搜索从指定字符位置开始
string str = "让世界变得更美好";
int res = str.IndexOf("世界变得", 0);
Console.WriteLine(res);
//输出结果是:1
LastIndexOf方法:String或一个活多个字符在此字符串中的最后一个一个匹配项
方法原型
(1)int <strName>.LastIndexOf(String) 指定字符在字符串中的最后一个匹配项的索引
string str = "让世界好得更美好";
int res = str.LastIndexOf("好");
Console.WriteLine(res);
//输出结果:7
(2)int <strName>.LastIndexOf(String,Int32) 指定字符串中的第一个匹配项的索引,该搜索从指定字符位置开始
string str = "让世界好得更好美好";
int res = str.LastIndexOf("得", 4);
Console.WriteLine(res);
//输出结果是:4
IndexOpAny方法 指定字符数组中的任意字符在此实例中第一个匹配项的索引
方法原型
(1)int <strName>.IndexOpAny(Char[]) 指定字符数组中的任意字符在此实例中第一个匹配项的索引。
string str = "地球很美好,我们很喜欢";
int res = str.IndexOfAny(new char[] { 's', '我' });
Console.WriteLine(res);
//输出结果:0
(2)int <strName>.IndexOpAny(Char[],Int32) 指定字符数组中的任意字符在此实例中第一个匹配项的索引。
搜索从指定字符位置开始
string str = "地球很美好,我们很喜欢";
int res = str.IndexOfAny(new char[] { '球', '我', '喜' }, 0);
Console.WriteLine(res);
//输出结果:1
(3)int <strName>.IndexOpAny(Char[],Int32,Int32)指定字符数组中的任意字符在此实例中第一个匹配项的索引。
搜索从指定字符位置开始,并检查指定数量的字符位置。
string str = "地球很美好,我们很喜欢";
int res = str.IndexOfAny(new char[] { '球', '我', '喜' }, 2, 5);
Console.WriteLine(res);
//输出结果:6
LastIndexOpAny方法和LastIndexOf方法的使用基本相同
1.6 求子字符串
方法原型
(1)string <strName>.SubString(Int32) 检索字符串,子字符串从指定的字符开始
string str = "我爱中国";
string res = str.Substring(2);
Console.WriteLine(res);
输出结果:中国
(2)string <strName>.SubString(Int32,Int32) 检索字符串,子字符串从指定的字符开始,并且具有指定的长度
string str = "我爱中国,中华名族万岁";
string res = str.Substring(2, 5);
Console.WriteLine(res);
输出结果:中国,中华
总结:string <strName>.SubString(int startIndex,int length);
从字符串strName的startIndex位置开始提取长度为length的字符串,如果省略第二个参数则表示一直到最后
1.7 字符串的插入移除和替换
字符串的插入
方法原型
string <strName>.Insert(Intzv32 startIndex,string value)在此实例中的指定索引位置插入一个指定的 String 实例。
string str = "我中国";
string res = str.Insert(1, "爱");
Console.WriteLine(res);
输出结果:我爱中国
总结:在字符串<strName>的startIndex位置上插入value,原来的字符依次后移,变成一个新的字符串
字符串的移除
方法原型
(1)string <strName>.Remove(Int32 startIndex) 删除此字符串中从指定位置到最后位置的所有字符
string str = "我爱中国日本大和民族";
string res = str.Remove(4);
Console.WriteLine(res);
输出结果:我爱中国
(2)string <strName>.Remove(Int32 StartIndex,Int32 Length) 从指定位置开始删除指定数目的字符
string str = "我爱中国日本&大和民族";
string res = str.Remove(4, 2);
Console.WriteLine(res);
输出结果:我爱中国&大和民族
总结:从字符串<strName>中移除StartIndex开始,长度为Length的字符串,剩下的字符按照原来的顺序重新排成
一个新的字符串,如果省略第二个参数,将移除StartIndex后面的所有的字符串
字符串的替换
方法原型
(1)string <strName>.Replace(char oldchar,char newchar) 将字符串<strName>中的oldchar替换为newchar
string str = "我爱中华&美国";
string res = str.Replace('&', '和');
Console.WriteLine(res);
输出结果:我爱中华和美国
(2)string <strName>.Replace(string oldvalue,string new value) 将字符串<strName>中的oldvalue替换为newvalue
string str = "我爱中华&美国";
string res = str.Replace("美国", "天朝");
Console.WriteLine(res);
输出结果是:我爱中华&天朝
1.8 判断开始和结束
StartsWith开始
方法原型
bool <strName>.StartsWith(String value) 确定此实例的开头是否与指定的字符串匹配
string str = "我爱中华";
bool istrue = str.StartsWith("我哎");
Console.WriteLine(istrue);
输出结果是:False
EndsWidth结束
方法原型
bool <strName>.EndsWith(string value) 确定此实例的结尾是否与指定的字符串匹配
string str = "我爱中华";
bool istrue = str.EndsWith("中国");
Console.WriteLine(istrue);
输出结果:False
1.9 字符串的赋值
Copy方法
方法原型
string String.Copy(string str); 创建一个与指定String具有相同值的String的新实例
string str = "韩迎龙";
string res = string.Copy(str);
Console.WriteLine(res);
输出结果是:韩迎龙
CopyTo方法
方法原型
string <strName>.CopyTo(int sourceIndex,char[] destination,int destinationIndex,int count)
//将指定数目的字符从此实例中的指定位置复制到字符数组中的指定位置
string dest = "Hello world";
string source = "Goodbye China";
char[] destArray = dest.ToCharArray();//将dest变成字符数组
source.CopyTo(8, destArray, 6, 5);//从source的第8个字符起复制5个字符并从destArray的第6个位置开始放
dest = new string(destArray);//这时dest为"Hello China"
Console.WriteLine(dest);
输出结果是:Hello China
总结:字符串具有不可变性,对字符串的修改,实际上都是重新得到一个字符串,重新赋值
C#字符串操作,转自韩迎龙博客的更多相关文章
- spark-shell使用指南. - 韩禹的博客
在2.0版本之前,Spark的主要编程接口是RDD(弹性分布式数据集),在2.0之后,则主推Dataset,他与RDD一样是强类型,但更加优化.RDD接口仍然支持,但为了更优性能考虑还是用Datase ...
- 鸿蒙内核源码分析(文件句柄篇) | 深挖应用操作文件的细节 | 百篇博客分析OpenHarmony源码 | v69.01
百篇博客系列篇.本篇为: v69.xx 鸿蒙内核源码分析(文件句柄篇) | 深挖应用操作文件的细节 | 51.c.h.o 文件系统相关篇为: v62.xx 鸿蒙内核源码分析(文件概念篇) | 为什么说 ...
- 韩天峰博客 php基础知识学习记录
http://rango.swoole.com 写好PHP代码真的不容易,给大家几个建议: 慎用全局变量,全局变量不好管理的,会导致你的代码依赖于全局变量,而耦合度太高. 一定不要复制粘贴代码,可重用 ...
- PHP字符串操作汇总
PHP开发中常用的字符串操作介绍 -- 简明现代魔法 PHP学习笔记之字符串的简单处理 - RuanJava的专栏 - 博客频道 - CSDN.NET PHP String 函数
- HTML5中 HTML格式化/HTML样式/链表/表格-样式 韩俊强的博客
HTML5学习从简单到复杂,循环渐进! 每日更新关注:http://weibo.com/hanjunqiang 新浪微博! 1.HTML格式化 <!DOCTYPE html> <h ...
- HTML5中 基本用法及属性 韩俊强的博客
从今天开始更新H5相关学习:希望大家能一起学习,多学习一门语言,多一门乐趣! 了解Html5: Html5基本属性: <!DOCTYPE html> <html lang=" ...
- iOS中 按钮和标题完美各种排列/完美教程 韩俊强的博客
每日更新关注:http://weibo.com/hanjunqiang 新浪微博! 前言:最近常常用到按钮和相应标题的组合,当按钮设置图片加标题时,触发范围较小,不易触发,最重要的是还要调试偏移量, ...
- iOS中 本地通知/本地通知详解 韩俊强的博客
布局如下:(重点讲本地通知) iOS开发者交流QQ群: 446310206 每日更新关注:http://weibo.com/hanjunqiang 新浪微博 Notification是智能手机应用编 ...
- 小白的Python之路 day2 字符串操作 , 字典操作
1. 字符串操作 特性:不可修改 name.capitalize() 首字母大写 name.casefold() 大写全部变小写 name.center(50,"-") 输出 '- ...
随机推荐
- ReentrantLock Condition await signal 专题
Condition的执行方式,是当在线程T1中调用await方法后,线程T1将释放锁,并且将自己阻塞,等待唤醒, 线程T2获取到锁后,开始做事,完毕后,调用Condition的signal方法,唤醒线 ...
- Android 基于Bmob平台数据管理常用方法整理
最近想搞一下基于Bmob平台的应用开发,发现确实挺方便的,很好的解决了服务器后台部署的难题, 但是也有一些弊端,数据架构的可扩展性不强,做一些数据结构简单的应用还是可以的. package com.b ...
- js进阶 11-2 jquery属性如何操作
js进阶 11-2 jquery属性如何操作 一.总结 一句话总结:jquery中的属性用attr方法表示.jquery中都是方法. 1.jquery中的属性的增删改查操作? 只需要两个方法, at ...
- Git Push问题remote: hooks/update:10 undefined method 'require_relative' for main:Object(NomethodError)
今天在提交代码时遇到到了一个非常蛋疼的问题,remote: hooks/update:10 undefined method 'require_relative' for main:Object(No ...
- Android自定义控件View(二)继承控件
在前一篇博客中学习了Android自定义控件View的流程步骤和注意点,不了解的童鞋可以参考Android自定义控件View(一).这一节开始学习自定义控件View(二)之继承系统已有的控件.我们来自 ...
- 简洁常用权限系统的设计与实现(一):构造权限菜单树的N(N>=4)种方法
权限系统,Web开发常见标准子系统之一.结合自己的一些思考和实践,从本篇开始权限系统的设计与实现之路. 最近,重构了项目的权限菜单构造过程,向前端返回json格式的权限树. 这一篇,只是大致介绍下这个 ...
- js进阶 9-15 多选框如何限制选中数目
js进阶 9-15 多选框如何限制选中数目 一.总结 一句话总结: 1.多选框如何限制选中数目? 没点击选择一次,来统计现在总共选了多少个,如果超出,就给onclick事件返回false,取消oncl ...
- Web开发的编码解决中文乱码
中文乱码有两个环节会出现 第一,从请求体中获得的数据 从请求体中获得的数据要为其进行编码,默认为ISO-8859-1,所以在使用getParameter()时先调用setCharacterEncodi ...
- 【9210】找礼物(char* num[2000]的使用 get char num[i] = new char[1000])
Time Limit: 10 second Memory Limit: 2 MB 问题描述 新年到了,突然间,就在那美丽的一霎那,你好友和你(K个人)的周围满是礼物,你发扬你帅气的风格,让你的好友先拿 ...
- Linux 在主要的搜索命令和视图的信息
查找命令和硬件信息查看的日常系统管理.最常见的维护操作. 继 Linux 基本查找命令做一个简单的比较.并列出了一些硬件信息经常使用的视图命令. man 经常使用选项 -k 知道功能.不知道名称 -f ...