广东顺德网站建设,和拓者设计吧类似的网站,那个网站可以学做西餐,网站建设外包必须注意几点由于微信公众号改变了推送规则#xff0c;为了每次新的推送可以在第一时间出现在您的订阅列表中#xff0c;记得将本公众号设为星标或置顶喔~ 简单介绍了C#字符串分割、取子串、拼接、格式化数值以及StringBuilder类#xff0c;拿捏测绘程序设计大赛~
#x1f33f;前言 字…
由于微信公众号改变了推送规则为了每次新的推送可以在第一时间出现在您的订阅列表中记得将本公众号设为星标或置顶喔~ 简单介绍了C#字符串分割、取子串、拼接、格式化数值以及StringBuilder类拿捏测绘程序设计大赛~
前言 字符串的操作是测绘程序设计大赛的重点本文根据笔者经验分享了字符串的分割、取子串、拼接以及最重要的格式化数值操作最后提到了StringBuilder类的AppendLine方法在测绘程序设计大赛中的妙用。
字符串的分割 字符串的分割意思是将一个字符串变量按照某个字符分割开得到一个字符串数组也叫裂开、分隔反正就和方言一样说法不一罢了。 例如将一个字符串例如测绘,遥感,地信,自环按照逗号进行split(分割)得到一个字符串数组[测绘, 遥感, 地信, 自环]。在C#中字符串提供有Split方法(函数,在类中笔者很习惯叫方法形如xxx.Split())来实现这个过程。
string myString 测绘,遥感,地信,自环;// 按照逗号分割字符串
//string[] stringArray myString.Split(new char[] { , });
string[] stringArray myString.Split(,); //简写方式(适合比赛)// 使用foreach循环打印
foreach (string s in stringArray)
{Console.WriteLine(s);
}Console.ReadKey();核心语句string[] stringArray myString.Split(,); Split方法可以将字符串按照指定字符分割成字符串数组。如果需要分割的字符串是按照空格或者分号间隔的只需稍加改动即可。不仅如此如果将myString.Split(,)改为myString.Split(,, ;)还会同时按照逗号和分号来分割字符串读者可以自行尝试。 字符串分割是测绘程序设计大赛读取数据文件时经常会用到。例如2024年测绘程序设计大赛数据就是一个很经典的例子。 字符串取子串 字符串的子串是指从一个字符串A内截取一段连续的字符得到新的字符串B则字符串B就是字符串A的子串。例如:字符串测神州经纬就是字符串测神州经纬绘祖国蓝图!的一个子串。从字符串A中截取产生新的字符串B的动作就是字符串取子串。C#中Substring方法可以实现这个过程。
string s 测神州经纬绘祖国蓝图!;
string s1 s.Substring(0, 6); //从位置0开始向后取6位包括位置0
string s2 s.Substring(6);//从索引6(绘)位置开始到结束包括索引6
Console.WriteLine(s1);
Console.WriteLine(s2);
//这里使用Join函数可以将字符串数组重新组合成字符。
Console.WriteLine(string.Join(, new string[] { s1, s2 }));Console.ReadKey();核心语句string s1 s.Substring(0,6); //从位置0开始向后取6位包括位置0 核心语句string s2s.Substring(6);//从索引6(绘)位置开始到结束包括索引6 Substring只需要指定子串的起始索引和子串长度(包括起始位置在内)即可实现取子串如果只传入一个数字而不传入子串长度则会从当前位置取到结束。 需要注意的是C#中字符串、数组都是从0开始索引。而在Matlab中字符串索引从1开始所以经常编写Matlab代码的参赛选手需要稍加注意。 在测绘程序设计大赛中字符串取子串通常用来读取星历文件例如李英冰老师的《测绘程序设计》教材中电离层改正计算章节的数据文件读取。 字符串拼接 字符串拼接很好理解两个字符串按照先后顺序拼接在一起组成一个新的字符串的过程。字符串拼接的方法很多这里笔者仅介绍种常用的方法。
1.可以使用加法运算符直接拼接字符串
string a Hello;
string b C#;
string c Im little y;
//直接相加连接成新的字符串
string result a b \n c;
Console.WriteLine(result);2.但是笔者更推荐使用美元符号$:
string a Hello;
string b C#;
string c Im little y;
//双引号前加$符号{}类填变量名
string result ${a} {b}\n{c};
Console.WriteLine(result);格式化数值 格式化数值笔者也不知道是哪里冒出来的这个词。其大致意思就是说对数字进行保留两位小数、保留三位有效数字等等这种保留完后的类型是字符串。此处仅说明常用的保留小数位的方法。
1.使用stringFormat()函数
double a 3.14;
//使用零占位符0和数字占位符#
Console.WriteLine(string.Format({0:00.###}, a));//03.14
Console.WriteLine(string.Format({0:00.000}, a));//03.140Console.ReadKey();零占位符就是说这个位置默认值是0如果有数字则变成相应的数字。数字占位符所在位置如果有数字则为数字否则不存放任何值。变量名后跟冒号冒号之后写格式要求。
2.笔者还是推荐使用美元符号$
double a 3.14;
//使用零占位符0和数字占位符#
Console.WriteLine(${a:00.###});//03.14
Console.WriteLine(${a:00.000});//03.140Console.ReadKey();3.比赛推荐 在比赛时通常要求最后的结果保留几位小数如果是保留八位小数则按照上述方法需要敲至少八个0就不是很方便。笔者推荐使用’Fn’的方式。F即可以理解为float。F0就是保留0位小数。
double a 3.14;
//使用Fn的方式F0表示保留0位小数F也可以小写f
Console.WriteLine(${a:F0});//3
Console.WriteLine(${a:f3});//3.14Console.ReadKey();需要注意的是这种小数取位方式可能是四舍五入、也有可能直接是去尾法、亦或是其他方法不同的编程语言还不太一样。 但对于测绘程序设计大赛而言最终的评分是将你计算的结果与参考值作差就像浮点数判断是否相等那样来确定答案正确与否。且大部分参赛选手也都是这么写法、《测绘程序设计》教材参考代码也是这种写法所以该写法问题并不大。具体可以赛前再与比赛举办方交流沟通~ 其他字符串方法
Trim() 对于其他字符串方法笔者暂时能想到的会用得上的也就Trim。Trim释义有修剪、整洁的意思实际效果就是去除字符串首尾空格。在读取字符串结束后做一遍Trim是一种好习惯可以提高程序的容错性。
string myString 太棒啦 ;
Console.WriteLine(myString);
string trimString myString.Trim();
Console.WriteLine(trimString);Console.ReadKey(); 通过断点调试可以在局部变量窗口看到Trim的效果去除字符串首尾空格。 StringBuilder类 String是不可变的类型在做字符串拼接等操作时都是产生一个新的字符串。StringBuilder类的内容是可变的在进行字符串的一些操作时会*相对高效**。 而笔者想要的不是StringBuilder的效率而是StringBuilder的换行符。StringBuilder类有很多的方法比如Append、AppendLine、Insert、Remove、Replace…等等笔者仅展示AppendLine(增加一行内容)的用法。 在没有了解StringBuilder类之前笔者在组织测绘程序设计报告内容部分时一直使用\n来进行换行操作。
//传统换行符编写报告
string temp 序号,说明,计算结果\n;
temp 1,xxx,xxx\n;
temp 2,yyy,yyy\n;
string report temp;Console.WriteLine(report);
Console.ReadKey();在学会使用StringBuilder类以后觉得还是StringBuilder会相对方便一些。
//StringBuilder编写报告
StringBuilder sb new StringBuilder();
sb.AppendLine(序号,说明,计算结果);
sb.AppendLine(1,xxx,xxx);
sb.AppendLine(2,yyy,yyy);string report sb.ToString();Console.WriteLine(report);
Console.ReadKey();使用AppenLine时会自动在字符串尾部追加一个换行符\n在比赛紧张场景下漏掉换行符是笔者常有之事(符号太多啦看不过来不知道读者是不是也和笔者一样~)使用AppenLine会好很多。 结语 关于字符串还有许多其他的知识比如符号、字符串的比较、字符串包含与被包含关系等等因篇幅有限且测绘程序设计大赛用的较少读者可自行查看微软官方文档https://learn.microsoft.com/zh-cn/dotnet/standard/base-types/best-practices-strings 微软官方文档介绍StringBuilder类https://learn.microsoft.com/zh-cn/dotnet/standard/base-types/stringbuilder 笔者为测绘遥感方向的学习者愿意结交志同道合的伙伴欢迎关注公众号与笔者一起交流学习~ 路虽远行则将至事虽难做则必成。希望认真学习的你能够有所收获~ 本公众号的原创成果在未经允许的情况下请勿用于任何商业用途 如果本文有幸可以帮到您欢迎您的点赞、收藏⭐与关注❤您的点赞、收藏⭐与关注❤是我创作的最大动力~