C#string类型总结

个人笔记分享,知识点以及小练习

字符串的特性:不可变性,每对字符串做拼接或者重新赋值之类的操作,都会在内存中产生一个新的实例。

所以说,在.Net平台下,如果你对一个字符串进行大量的拼接赋值等操作,会产生大量的垃圾。

---->我们可以将字符串看做是char类型的只读数组。

--->当我们以索引的方式去访问某一个字符串的时候,获得是char类型

空和null有什么区别,空在内存上开空间了,null没有

字符串的常用函数

1、ToCharArray():将一个字符串转换成一个char类型的数组。

2、new string(char[] chs):根据一个char类型的数组返回一个字符串。

3、ToUpper():返回字符串的大写形式.

4、ToLower():返回字符串的小写形式.

5、Equals(,stringcomprasion......):比较两个字符串是否相等,可以忽略大小写。

(lessonOne.Equals(lessonTwo,StringComparison.OrdinalIgnoreCase))

Equal和Tostring都是object下的虚方法,都可以重写

6、Split():分割字符串,返回字符串类型的数组。

string[] nerstr=str.Split(new char[] { ‘ ‘, ‘,‘, ‘-‘ }, StringSplitOptions.RemoveEmptyEntries);

7、Contains():判断字符串中是否包含指定的字符串

8、Replace():将老字符串替换成新字符串

9、StartsWith():判断字符串是否以指定的字符串开始

10、EndsWith():判断字符串是否以指定的字符串结束

11、Trim():去掉字符串两端的字符。但是,不能去掉字符串中间的字符。

12、TrimStart():

13、TrimEnd():

14、Substring():截取指定的字符串,可以选择截取的长度。

15、IndexOf():取某一个字符在字符串中第一次出现的位置,如果没有,则返回-1。

16、LastIndexof():去某一个字符在字符串中最后一次出现的位置,如果没有,则返回-1。

17、静态函数

--->string.IsNullOrEmpyt()判断指定的字符串是否为空或者为null

--->string.Join():将指定的分隔符插入数组每个元素的后面,返回一个字符串,默认最后一个元素后面没有。

18:等号和Equals的区别

对于string类型而言,不管是等号还是Equals比较的都是值本身。

//Equals默认比较的是地址,但是我们在自己定义的类中如果用到Equals,都会将Equals进行重写,使之按照我们自己的需求进行比较

拼接字符串

//string str = string.Empty;

//StringBuilder sb = new StringBuilder();

////00:00:00.1022297

//Stopwatch sp = new Stopwatch();

提供一组方法和属性,可用于准确地测量运行时间。

//sp.Start();

//for (int i = 0; i < 100000; i++)

//{

//    //str += i;

//    sb.Append(i); //追加

//}

//sp.Stop();

//Console.WriteLine(sp.Elapsed);

获取当前实例测量得出的总运行时间。Elapsed

//Console.WriteLine(sb.ToString());

StringBuilder sb = new StringBuilder();

举例: #region new string() ToCharArray()

//string str = "abcdef";

////str[0] = ‘b‘;

//////字符串--->char数组(可读可写)

////char[] chs = str.ToCharArray();

////chs[0] = ‘b‘;

//////将改变后的char数组再次转换成字符串

////str = new string(chs);

//Console.WriteLine(str[0]);

#endregion

#region Length属性

//Console.WriteLine("请输入你人生中最深刻老师的名字");

//string name = Console.ReadLine();

//Console.WriteLine("这个老师的名字有{0}个字",name.Length);

#endregion

#region ToUpper() ToLower() Equals()

//Console.WriteLine("请输入你喜欢的课程");

//string lessonOne = Console.ReadLine();

////转换成大写

////lessonOne = lessonOne.ToUpper();

////转换成小写

////lessonOne = lessonOne.ToLower();

//Console.WriteLine("请输入你喜欢的课程");

//string lessonTwo = Console.ReadLine();

////lessonTwo = lessonTwo.ToUpper();

////lessonTwo = lessonTwo.ToLower();

//if (lesssonsonOne.Equals(leTwo,StringComparison.OrdinalIgnoreCase))

//{

//    Console.WriteLine("你们喜欢的课程相同");

//}

//else

//{

//    Console.WriteLine("你们喜欢的课程不相同");

//}

#endregion

#region Split() 字符串的分割

////string str = "abc   ,,,d, ,--,ef,,--  0987";

//////将一个字符串中没用的东西去掉

////string[] strNew = str.Split(new char[] { ‘ ‘, ‘,‘, ‘-‘ }, StringSplitOptions.RemoveEmptyEntries);

////练习:从日期字符串("2008-08-08")中分析出年、月、日;2008年08月08日。

////让用户输入一个日期格式如:2008-08-08,你输出你输入的日期为2008年1月2日

//string date = "2008-08-08";// "2008年08月08日";

//string[] newDate = date.Split(new char[] { ‘-‘ }, StringSplitOptions.RemoveEmptyEntries);

//date = newDate[0] + "年" + newDate[1] + "月" + newDate[2] + "日";

//Console.WriteLine(date);

//Console.ReadKey();

#endregion

#region Contains()判断是否包含  Replace()替换

//Console.WriteLine("请输入你的评论");

//string input = Console.ReadLine();

////1、判断评论中是否包含敏感词

//if (input.Contains("老赵"))

//{

//    //2、进行替换

//    input = input.Replace("老赵", "***");

//}

//Console.WriteLine(input);

//Console.ReadKey();

#endregion

#region StartsWith() EndsWith()

//string str = "举头望明月,我叫郭德纲";

////if (str.StartsWith("头"))

////{

////    Console.WriteLine("是的");

////}

////else

////{

////    Console.WriteLine("不是");

////}

//Console.WriteLine(str.EndsWith("举头望明月,我叫郭德纲") ? "是的" : "不是");

#endregion

#region Trim() TrimEnd() TrimStart()

/*string str = "----  ---1   2---3-  --  ----";

////str = str.Trim(); 去掉字符串两边的空格

////str = str.TrimStart(); 去掉字符串前边的空格

////str = str.TrimEnd();去掉后面的空格

str = str.Trim(‘-‘,‘ ‘);

//string[] strNew = str.Split(new char[] { ‘-‘, ‘ ‘ }, StringSplitOptions.RemoveEmptyEntries);

Console.Write(str);

Console.ReadKey(); */

#endregion

#region Substring() 截取字符串

string str = "今天我要是上课睡觉了,我以后就单身一辈子";

str = str.Substring(12,2);

Console.WriteLine(str);

Console.ReadKey();

#endregion

#region LastIndexof()找到某一个字符在字符串中最后一次出现的位置

//string path = @"c:\a\b\c\e\亚廷\d\f\苍老师苍老师.avi";

////找到某一个字符在字符串中最后一次出现的位置

////获得 \\在路径中最后一次出现的位置

//int index = path.LastIndexOf(‘\\‘);

//string fileName = path.Substring(index + 1);

//Console.WriteLine(fileName);

//Console.ReadKey();

#endregion

#region IndexOf()

/* string str = "举头望明头头月,我叫头郭头德纲";

int index = str.IndexOf(‘a‘, 3);

Console.WriteLine(index);

Console.ReadKey();*/

#endregion

//Console.WriteLine(string.IsNullOrEmpty(null) ? "yes" : "no");

/*  string[] names = { "张三", "李四", "王五", "赵六", "田七" };

//张三|李四|王五|赵六|田七

string str = string.Join("|", names);

Console.WriteLine(str);

Console.ReadKey();*/

//课上练习2:接收用户输入的一句英文,将其中的单词以反序输出。      “I love you"→“I evol uoy"

//string str = "Chinese food is best food";

////获得要翻转的单词 按照空格分割

//string[] strNew = str.Split(new char[] { ‘ ‘ }, StringSplitOptions.RemoveEmptyEntries);

//for (int i = 0; i < strNew.Length; i++)

//{

//    char[] chs = strNew[i].ToCharArray();

//    for (int j = 0; j < chs.Length / 2; j++)

//    {

//        char temp = chs[j];

//        chs[j] = chs[chs.Length - 1 - j];

//        chs[chs.Length - 1 - j] = temp;

//    }

//    strNew[i] = new string(chs);

//}

////把空格安插到字符串数组中每个元素的后面

//str = string.Join(" ", strNew);

//Console.WriteLine(str);

//Console.ReadKey();

//课上练习4:把csv文件中的联系人姓名和电话显示出来。简单模拟csv文件,csv文件就是使用,分割数据的文本,输出:

//string[] lines = File.ReadAllLines(@"C:\Users\SpringRain\Desktop\电话.txt", Encoding.Default);

//for (int i = 0; i < lines.Length; i++)

//{

//    //将双引号替换成""

//    lines[i] = lines[i].Replace("\"", "");

//    //将逗号和分号去掉

//    string[] linesNew = lines[i].Split(new char[] { ‘,‘, ‘;‘ }, StringSplitOptions.RemoveEmptyEntries);

//    Console.WriteLine("姓名:" + linesNew[0] + linesNew[1] + " 电话:" + linesNew[2]);

//}

/* string str = "一日,天气炎热。两香蕉在路上散步,一香蕉抱怨道:“好热阿,好热阿。”遂脱衣。另一香蕉遂倒";

int index = str.IndexOf("香蕉");

Console.WriteLine("香蕉第一个出现的位置{0}",index);

int count=1;

while(index!=-1)

{

count++;

index = str.IndexOf("香蕉", index + 1);

if(index==-1)

{

break;

}

Console.WriteLine("第{0}次出现的香蕉的位置是{1}",count,index);

}

Console.ReadKey();*/

等号和Equals的区别

Person p1 = new Person() { Name = "刘德华", Age = 18 };

Person p2 = new Person() { Name = "刘德华", Age = 18 };

//if (p1.Equals(p2)) //这是不相等的Equals默认比较的是地址,

//{

//    Console.WriteLine("相等");

//}

//else

//{

//    Console.WriteLine("不相等");

//}

class Person

{

public string Name { get; set; }

public int Age { get; set; }

}

如果让他们比较值那就:::重写

public override bool Equals(object obj)

{

Person person = obj as Person;

if (this.Name == person.Name && this.Age == person.Age)

{

return true;

}

else

{

return false;

}

}

StringBuilder sb = new StringBuilder();

//sb.Append("123");

//sb.Append("张三");

Console.Writeline(sb);显示123张三

Person p1 = new Person() { Name = "刘德华", Age = 18 };

class Person

{

public string Name { get; set; }

public int Age { get; set; }

}

Console.WriteLine(p1.ToString());//这个对象所在的类的命名空间

时间: 2024-10-06 12:11:55

C#string类型总结的相关文章

float类型如何转换为string类型

在一些很大的float类型的地方会用科学记数法表示,这个时候如果想完整记录下来,还是得转字符串,这里书写一个float类型转string类型的方法 <?php function float_to_string($float=0) { if(stripos($float, "e")!==false) { $tmp = explode("e",strtolower($float)); $float=bcmul($tmp[0], bcpow(10, $tmp[1])

string 类型的输入操作符 cin 和 getline 函数分别如何处理空白字符?

string用来读取一个word : string 类型的输入操作符 cin 对空白字符的处理:读取并忽略有效字符(非空白字符)之前所有的空白字符,然后读取字符直至再次遇到空白字符,读取终止(该空白字符仍留在输入流中). getline 函数用来读取整行文本,接受两个参数:一个输入流对象和一个 string 对象,例如 getline(cin,line): getline 函数对空白字符的处理:不忽略行开头的空白字符,读取字符直至遇到换行符,读取终止并丢弃换行符(换行符从输入流中去掉但并不存储在

计算两个日期之间相差几天(Date类型与String类型互相转换)

一:计算两个日期之间相差几天 1 /** 2 * 3 */ 4 package com.hlcui.date; 5 6 import java.text.ParseException; 7 import java.text.SimpleDateFormat; 8 import java.util.Calendar; 9 import java.util.Date; 10 11 import org.junit.Test; 12 13 /** 14 * @author Administrator

关于SpringMVC中如何把查询数据全转成String类型

之前,本想与客户商量做几张固定的报表予使用,结果发现客户每个月都需要各种各样的报表,所以我们做了个窗口用于直接执行SQL语句:数据量一开始并不是很大查询出来的数据较少(约1-6W左右),所以刚开始几个月很好用,查询出来的数据直接从页面复制下来贴到Excel做月报表,就这样一年过去了,最近做三期,发现运维人员月底几天特别的忙,数据逾百万(汗),SQL查询语句都要写n多分页.... 伙伴们如此幸苦,还是我来拯救他们吧- 我的解决思路大致如下: A>界面增加查询倒出Excel表按钮(不需要分页,也不需

从String类型字符串的比较到StringBuffer和StringBuilder

1. String类型 String类源码 为了从本质上理解String类型的特性所在,我们从String类型的源码看起,在源码中String类的注释中存在以下: /**Strings are constant; their values cannot be changed after they * are created. String buffers support mutable strings. * Because String objects are immutable they ca

Java 日期时间 Date类型,long类型,String类型表现形式的转换 (转)

Java 日期时间 Date类型,long类型,String类型表现形式的转换 1.java.util.Date类型转换成long类型java.util.Date dt = new Date();System.out.println(dt.toString());   //java.util.Date的含义long lSysTime1 = dt.getTime() / 1000;   //得到秒数,Date类型的getTime()返回毫秒数 2.由long类型转换成Date类型SimpleDat

架构师养成记--31.Redis的String类型

Redis一共分为五种基本数据类型:String.Hash.List.Set.ZSet String类型是包含很多张类型的特殊类型,并且是二进制安全的.比如对序列化的对象进行存储,比如一张图片进行二进制存储,比如一个简单的字符串数值等等. Set和get方法的使用 设置值:set name sgm (多次设置name值,后一次会覆盖前一次) 取值 get name 删除值:del name setnx,nx的意思就是not exists:不覆盖赋值,如上例,如果name存在就不设置了. sete

jstl foreach标签格式化date,string类型数据

本文要说jsp中date类型格式化和string类型分割处理 首先说date数据格式化 1.jsp中给date类型数据格式化首先需要引入 <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %> 如果后台带过来的数据是date类型,那就好办了,只要像下面这样用fmt标签就可以了,pattern定义时间的格式 <c:forEach items="${list}&quo

String类型,Function类型

1.String类型:  1)创建String对象:    var str=new String(s);    String(s);    参数:参数 s 是要存储在 String 对象中的值或转换成原始字符串的值.    返回值:当String()和运算符new一起作为构造函数使用时,它返回一个新创建的String对象,存放的是字符串s          当不用 new 运算符调用String()时,它只把 s 转换成原始的字符串,并返回转换后的值. 2)String对象属性:    leng

Redis学习笔记(三)-数据类型之string类型

string是redis最基本的类型,而且string类型是二进制安全的.意思是redis的string可以包含任何数据.比如jpg图片或者序列化的对象.从内部实现来看其实string可以看作byte数组,最大上限是1G字节.下面是string类型的定义. struct sdshdr {  long len;  long free;  char buf[]; }; buf是个char数组用于存贮实际的字符串内容.其实char和c#中的byte是等价的,都是一个字节.len是buf数组的长度,fr