C#小结:string、double、TimeSpan等常见类型的小结和坑点

embedded/2024/10/15 18:31:51/

一、string

1.常见用法

string s = "我是一个字符串";Console.WriteLine(s.Length);//输出长度7Console.WriteLine(s.IndexOf("是"));//输出索引1Console.WriteLine(s.Replace("是", "不是"));//后代前,输出“我不是一个字符串”Console.WriteLine(s.Substring(4, 3));//切片输出“字符串”(第4开始长度为3)Console.WriteLine(s.Substring(2));//切片输出“一个字符串”(第2开始到结束)bool b= s.Contains("一个");//字符串s,是否含有 “一个”bool b2=s.StartsWith("一个") ;// 字符串s,是否以 “一个”开头bool b3=s.EndsWith("一个") ;// 字符串s,是否以 “一个”结尾

2.Trim去除字符串

去除多余字符时,字符字面量中的字符太多:

data.TrimStart('ABC');

改为:

data.TrimStart("ABC".ToCharArray());

3.Contains方法混淆

mainString.Contains(subString),例子如下所示:

Console.WriteLine("P业务经理".Contains("P领域主管,P项目成员,P业务经理"));//返回False
Console.WriteLine("P领域主管,P项目成员,P业务经理".Contains("P业务经理"));//返回True

4.Split劈分字符串

    string s = "Hello,World,How,Are,You";string[] words = s.Split(',');Console.Write(words[1]);//输出World

二、Double

1.计算结果为0

当b和c都是int类型时,如b=1 c=10,则a=0

double a= b/c ;

若使得a=0.1,需改成:

double a= (double)b/c ;

三、TimeSpan

1.兼容LINQ中的Sum方法

LINQ不支持TimeSpan用Sum方法,例如以下list的Time的类型是TimeSpan,以下代码会报错

list.Sum(x => x.Time).TotalHours

可以转化一下,先求出毫秒总和,然后再化为TimeSpan形式,求出TotalHours(或者其余需要的变量)

TimeSpan.FromMilliseconds(list.Sum(x => x.Time.Value.TotalMilliseconds)).TotalHours

四、Tuple

实现值的快速交换:

   int a = 1;int b = 100;(a, b) = (b, a);//交换Console.WriteLine(a);//100Console.WriteLine(b);//1

零、其余小结

1.问号的两种用法

//1.有关空string text = null;//text不为空才点出Length,如果为空则输出123Console.WriteLine(text?.Length.ToString() ?? "123");//2.三元运算符string result = (text == "1") ? "text等于1" : "text不等于1";Console.WriteLine(result);

2.判断入参类型

public object GetTypeCode(object obj){if (obj is float)//如果传参是浮点型{return "abc";//返回字符串abc}else if (obj is double)//如果传参是双精度浮点型{return 2;//返回整型2}else{// 如果传入的类型不是float或double,则返回null或其他你认为合适的值return null;}}

3.拓展方法

【注意】不要和原有方法重名,否则优先执行原有方法!以下是string的拓展方法。

public static class ExpandMethod//扩展方法类名是任意起的,public static固定不变{public static bool EqualsAAA(this String data)//方法名是任意起的,public static固定不变,第一个参数是:this+被扩展类型+内容参数{   //若有入参(this String data,int a,sting b)if (data.Equals("AAA")){return true;}return false;}}class MainClass//新建一个类,在这个类中可调用写好的扩展类下的扩展方法{static void Main(string[] args){Console.WriteLine("a".EqualsAAA());//调用扩展方法,返回FalseConsole.WriteLine("as".EqualsAAA());//返回FalseConsole.WriteLine("AAA".EqualsAAA());//返回True}}


http://www.ppmy.cn/embedded/90860.html

相关文章

ios 5.5寸、ipad13英寸如何截屏

ios上架的时候,你可能会发现,上架需要ios 5.5寸,ipad需要13英寸的屏幕截屏。 但是尴尬了,我们手头上的手机,可能是最新的iphone 15,并没有远古时代iphone 8 plus的5.5寸,那么我们该如何截屏呢&…

打卡第31天------贪心算法

每天抓紧时间刷题,争取尽快上岸,不能再耽误一分一秒了,2024年已经过去大半年了。这个算法编程题是我的痛点。要尽快弥补。 卡尔在讲算法题的时候,思路比较清晰,通俗易懂,以前看见算法题就害怕,因为啥都不会,看懵了,跟了一个月了,每天坚持刷题,偶尔会回顾思路,也会…

U-Net++原理与实现(含Pytorch和TensorFlow源码)

U-Net原理与实现 引言1. U-Net简介1.1 编码器(Encoder)1.2 解码器(Decoder)1.3 跳跃连接(Skip Connections) 2. U-Net详解2.1 密集跳跃连接2.2 嵌套和多尺度特征融合2.3 参数效率和性能2.4 Pytorch代码2.5 …

glibc的安装及MySQL的安全用户角色权限(twenty-one day)

一、glibc安装 mysql 清空/etc/目录下的my.cnf ls -l /etc/my.cnf rm -rf /etc/my.cnf yum -y remove mariadb find / -name "*mysql*" -exec rm -rf {} \; 安装mysql软件包 wget https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.33-li nux-glibc2.1…

Ubuntu系统上重新安装Redis

作者:逍遥Sean 简介:一个主修Java的Web网站\游戏服务器后端开发者 主页:https://blog.csdn.net/Ureliable 觉得博主文章不错的话,可以三连支持一下~ 如有疑问和建议,请私信或评论留言! 在Ubuntu系统上重新安…

leetCode - - - 数组

1.移动0(leetcode283) 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 请注意 ,必须在不复制数组的情况下原地对数组进行操作。 class Solution {public void moveZeroes(i…

把销售额做到极致的摄影师都具备什么能力?

声明:此篇为 ai123.cn 原创文章,转载请标明出处链接:把销售额做到极致的摄影师都具备什么能力? | AI导航 ai123.cn 嘿,各位摄影师!今天来和你们聊聊一个“神秘”的话题:如何借助AI的力量&#x…

AI智能对战,当当狸智能五子棋!多种玩法更有趣,全家人都能畅玩

大家好,我是狸狸,我一直喜欢能和孩子一起玩的益智桌游,今天给大家介绍一款非常棒的智能五子棋——不用手机 也无需棋子。 这款棋既支持双人对战,也可以一个人和AI玩,系统语音提示、自动判输赢。 它拥有13*13的AI超大棋…