NET问答: 为什么 String.IndexOf 在 .net5 和 netcore3 中返回值不一样?

咨询区

  • Farhad Zamani

当我在 .NET Core 3.1 中运行下面代码的时候,程序会返回 6。

class Program{static void Main(string[] args){// .NET Core 3.1string s = "Hello\r\nworld!";int idx = s.IndexOf("\n");Console.WriteLine(idx);}}

但是同样的代码跑在 .NET 5.0 中却是不一样的结果。。。

static void Main(string[] args){// .NET 5.0string s = "Hello\r\nworld!";int idx = s.IndexOf("\n");Console.WriteLine(idx);}

请问一下,为什么会出现如此奇葩的事情?

回答区

  • Ray

你的样例代码其实在 MSDN: https://docs.microsoft.com/en-us/dotnet/standard/globalization-localization/globalization-icu  上也提到了,而且也很清楚的告知了如何去解决及如何恢复到老的版本。

在过去,.NET 的全球化API 在不同的平台上会使用不同的底层工具包,比如:

  1. Unix 上的 全球化API 会调用 ICU 工具包  (International Components for Unicode)

  2. Windows 上的 全球化API 会调用 NLS 工具包 (National Language Support)

不用的工具包呈现的行为肯定会有一些不一样,影响范围大致包括:

  1. 本地化和本地化数据

  2. string 的一些操作 (转换,排序,查找)

  3. zone 和 IDN

2019年5月, windows 做了一个补丁升级,让后续的 .NET 全球化API 由原来的 NLS 切换到了 ICU 模式,这就是在后续的 .NET5 表现不一致的根源,如果你想退回到 NLS,需要做如下配置。

修改 project 文件


<ItemGroup><RuntimeHostConfigurationOption Include="System.Globalization.UseNls" Value="true" />
</ItemGroup>

修改 runtimeconfig.json 文件


{"runtimeOptions": {"configProperties": {"System.Globalization.UseNls": true}}
}

新增环境变量 DOTNET_SYSTEM_GLOBALIZATION_USENLS = 1

点评区

看样子是打了补丁之后改变了默认的程序行为,还是不要乱升级,弄不好就要进坑了,????????????

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/300700.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vSpere虚拟网卡介绍

在一个物理网络拓扑中&#xff0c;通常都是路由器-交换机-PC机的连接&#xff0c;不同的服务器和PC机&#xff0c;通过交换机的连接而相互连通。在VMwarevSphere架构下服务器会虚拟出交换机来供ESXHost虚拟机来使用&#xff0c;虚拟交换机有两种&#xff0c;vSwitch虚拟交换机和…

快速掌握MATLAB应用,只要从这一步开始!

有人说&#xff0c;“MATLAB除了不会生孩子&#xff0c;什么都会。”矩阵运算、数据可视化、GUI&#xff08;用户界面&#xff09;设计、甚至是连接其他编程语言&#xff0c;MATLAB都能轻松实现&#xff01;那么&#xff0c;MATLAB到底有多厉害&#xff1f;MATLAB拥有丰富的算法…

如何查看 .NET Core 3.1 源代码

背景在 .NET 走向开源后&#xff0c;我们可以方便的查看 .NET 内部的实现方式&#xff0c;学习和寻找问题&#xff0c;甚至参与到 .NET 的开发中。前段时间&#xff0c;同事需要查看 C# 的 Task 类 (System.Threading.Tasks) 的一些实现和内部的原理&#xff0c;想找 Task 类的…

装×失败的后果。。。 | 今日最佳

世界只有3.14 % 的人关注了青少年数学之旅传说中的“虎口夺食”摄像头留下了垃圾桶欺负我的证据用力过猛扯淡还是扯底裤装失败二进洗脚盆玻璃太干净了&#xff0c;注意左边这个傻子哎呀&#xff0c;这个傻子真的是傻中奖的感觉还是要量力而行滑的还真溜。。。电动车此刻注入了灵…

.net core 下的HttpClient、WebClient性能测试

有许多服务需要拉取api接口数据&#xff0c;因此后端开发少不了对Http访问请求进行封装&#xff0c;最主要的应用方式莫过于采用WebClient进行封装&#xff0c;简单易用&#xff1b;而.net core微软官方推荐的是HttpClient和HttpClientFactory&#xff0c;到底哪个性能更加强劲…

北京一公交车发生爆炸 疑为乘客携带药品起反应

勘察人员从公交车里取出可疑爆炸物。薛珺摄点击查看其它图片昨日下午&#xff0c;一辆850路公交车行驶在阜成路时发生爆炸。5名乘客经检查均无大碍。   警方怀疑是乘客所携类似血清的药品引发化学反应所致。   事故现场在八里庄桥上&#xff0c;昨日下午5时许&#xff0c;一…

给定两个二叉树T和S,判断S是否为T的子树

2019独角兽企业重金招聘Python工程师标准>>> #include<iostream> #include <stdlib.h> using namespace std; struct node{int data;node* leftchild;node* rightchild; };bool isSubtree(node* root1,node* root2){if(root2NULL)return true;if(root1N…

ABP Framework 为什么好上手,不好深入?探讨最佳学习姿势!

离写上一篇经验总结 ABP Framework 研习社经验总结&#xff08;6.28-7.2&#xff09;&#xff0c;已经过去两周。ABP Framework 研习社&#xff08;QQ群&#xff1a;726299208&#xff09; 最近两周&#xff0c;又迎来了很多新伙伴&#xff0c;成员数量上升至300。从大家的关注…

见识过世界的强大,才能拥有掌握世界的力量

▲ 点击查看在假期的时候&#xff0c;很多家长会选择带孩子一起出去旅游玩耍。在这个过程当中&#xff0c;家长们可能经常都会被孩子各种稀奇古怪的问题给包围住。“这个车为什么能跑的那么快&#xff1f;“这棵树是什么树&#xff0c;为什么它长得比其他树要高&#xff1f;”…

FastTunnel - 打造人人都能搭建的内网穿透工具

FastTunnel是用.net core开发的一款跨平台内网穿透工具&#xff0c;它可以实现将内网服务暴露到公网供自己或任何人访问。与其他穿透工具不同的是&#xff1a;FastTunnel项目致力于打造一个易于扩展、易于维护的内网穿透框架&#xff0c;任何人都可以基于该框架二次开发&#x…

一招搞定高等数学! | 今日最佳

世界只有3.14 % 的人关注了青少年数学之旅瓜皮儿十三妹没品图一张图让你们看看鲨鱼的血液循环系统到底有多复杂普外科曾医生小猪佩奇其实是“巨猪佩奇”小猪佩奇真实身高为7.1英尺也就是2.16米但她在家还不是最高的一只浪鸭水陆两栖的自行车它出现在1932年的巴黎街头因为加装了…

WPF 表格控件 ReoGrid 的简单使用

WPF 表格控件 ReoGrid 的简单使用目录一、概述二、安装三、添加控件四、加载 Excel五、属性设置六、支持触摸滚动七、其它操作1、显示和隐藏列2、显示特定字体八、资源链接独立观察员 2021 年 7 月 9 日一、概述ReoGrid 是一个开源的表格控件库&#xff0c;支持 Winform 和 WPF…

史上最牛空姐,从飞机上掉下愣是没摔死

全世界只有3.14 % 的人关注了青少年数学之旅珠穆朗玛峰最新的测量高度为8844米&#xff0c;人是血肉之躯&#xff0c;一旦从这么高的地方掉下来&#xff0c;别说生还了&#xff0c;能有个全尸就不错了。但是&#xff0c;历史上却有这么以为超级幸运的女人&#xff0c;她从比珠穆…

nginx对websocket的支持及uliweb chatroom的测试

2019独角兽企业重金招聘Python工程师标准>>> 在尝试在uliweb中使用gevent开发聊天室时&#xff0c;已经在网上搜到nginx是支持websocket的代理的&#xff0c;不过应该不支持集群模式。不过当时没有试过&#xff0c;今天试了一下&#xff0c;在普通的反向代理是没有问…

为什么祖国没有农历生日? | 今日最佳

世界只有3.14 % 的人关注了青少年数学之旅假期计划路线所以为什么没有农历生日所以这个到底是什么字&#xff1f;身体不适&#xff0c;去了趟医院那医生怎么说&#xff1f;......你还敢说养我吗&#xff1f;&#xff08;图源网络&#xff0c;侵权删&#xff09;

ios中amplify配置configure_Nginx源码编译安装及配置文件初步学习

通过源码编译安装。nginx.org #官网地址 # 安装过程 wget http://nginx.org/download/nginx-1.18.0.tar.gz -P /usr/src # tar文件用tar命令解压 tar -zxvf nginx-1.18.0.tar.gz关于wget的-P参数&#xff0c;manual中的解释是prefix&#xff0c;Set directory prefix …

演示: 动态NAT完成网络地址翻译

演示&#xff1a; 动态NAT完成网络地址翻译技术交流与答疑请加入群&#xff1a;1952289演示目标&#xff1a;使用动态NAT完成对私有网络的地址翻译。演示环境&#xff1a;如下图9.63所示。演示背景&#xff1a;该演示环境保持PAT演示环境的网络基础配置&#xff0c;然后使用动态…

.NET测试用例写的好不好?让变种来测试一下!

为了保证代码能够正常工作&#xff0c;我们常常编写了大量单元测试&#xff0c;并且代码覆盖率也做到了100%。但是在生产环境运行时还是会出问题&#xff01;为什么&#xff1f; 这是因为你没有进行变异测试&#xff01;变异测试变异测试就是把bug&#xff08;变种mutant&#…

你根本想象不到,学霸到底经历过什么

全世界只有3.14 % 的人关注了青少年数学之旅在微信的订阅号中&#xff0c;每人最多有12个常读公众号。可公众号这么多&#xff0c;哪些公众号值得关注呢&#xff1f;今天给大家推荐的几个公众号&#xff0c;不仅生产优质的时效性内容&#xff0c;还会提供各种多元化的内容角度&…

买基金如何开户

开户主要有两种途径&#xff1a;&#xff08;1&#xff09;投资者通过深交所交易系统认购、买入或卖出上市开放式基金须使用深圳A股账户或深圳证券投资基金账户&#xff08;以下简称“深圳证券账户”&#xff09;。投资者可通过中国结算公司深圳分公司的开户代理机构&#xff0…