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,"-") 输出 '- ...
随机推荐
- 曼德勃罗(Mandelbrot)集合与其编程实现
一.从科赫雪花谈起 设想一个边长为1的等边三角形(例如以下图所看到的).取每边中间的三分之中的一个,接上去一个形状全然类似的但边长为其三分之中的一个的三角形,结果是一个六角形.如今取六角形的每个边做相 ...
- Android 设置图片 Bitmap任意透明度
两种思路,第一种思路是通过对Bitmap进行操作,将Bitmap的像素值get到一个int[]数组里,因为在android里Bitmap通常是ARGB8888格式,所以最高位就是A通道的值,对齐进行改 ...
- database software runInstaller无法看到全部的rac节点的处理方法
近期遇到一个问题:rhel5.5下 安装11.2.0.4的rac.GI安装完了没问题. 可是 database software runInstaller安装时,全部的节点在图形化界面中看不到. 搜 ...
- NOIP模拟 - 树
题目描述 给出一张n个点,m条边的无向图,摧毁每条边都需要一定的体力,并且花费的体力值各不相同,给定图中两个点x,y(x≠y),每当(x,y)之间存在路径,就需要不断摧毁当前图中花费体力最少的一条边, ...
- 【codeforces 776C】Molly's Chemicals
[题目链接]:http://codeforces.com/contest/776/problem/C [题意] 让你找区间[i,j] 使得sum[i..j]=k^t,这里t=0,1,2,3.. -10 ...
- 配置ANDROID_HOME
原文:配置ANDROID_HOME 1.在环境变量中设置一个名为ANDROID_HOME,变量值为SDK路径 2.添加至Path中 备注:ANDROID_HOME的变量值仅允许一个
- node服务器如何部署https证书
var http = require('http'); var https = require('https'); var path = require('path'); var fs = requi ...
- React事件处理函数传参问题
React事件处理函数参数 HTML标签与React 组件是不同的,事件对象e是HTML标签元素的,组件没有的.
- burp suite中国乱码的解决方案
于http的response还有经常出现乱码,其实解决的办法很easy 首先点击Options标签, 然后找到display 找到http message display watermark/2/te ...
- 学习 protobuf(一)—— ubuntu 下 protobuf 2.6.1 的安装
下载地址:https://github.com/google/protobuf/releases/download/v2.6.1/protobuf-2.6.1.tar.gz(如果初次下载失败,不妨多试 ...