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 类的…

也感山西黑窑洞

也感山西黑窑洞——代腾飞 2007年6月21日 于成都黑窑奴工十年痛屠龙刀下敢不从朗朗乾坤岂纵容敢问苍天谁枭雄转载于:https://www.cnblogs.com/daitengfei/archive/2007/06/22/792794.html

tcl mysql_MySQL·TCL语言

TCL语言就是我们所说的事务控制语言。首先事务的定义就是&#xff1a;一条或者多条SQL语句所组成的一个执行单位&#xff0c;且该组sql语句要么执行要么都不执行。事务有四大特性(ACID)&#xff0c;分别为&#xff1a;(1).原子性(A)&#xff1a;一个事务是不可再分割的整体&…

[原创]互联网金融App测试介绍

[原创]互联网金融App测试介绍 前端时间非常忙&#xff0c;终于非常忙的时间过去了&#xff0c;抽时间总结下我现在所在公司理财软件App测试&#xff0c;也各位分享下&#xff0c;也欢迎大家提建议&#xff0c;谢谢&#xff01; 先介绍下我所在公司的产品特点&#xff0c;公司所…

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

世界只有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;一…

mysql 常用权限_MySQL的权限有哪些

2015-09-04 回答不知道你问的什么意思&#xff0c;mysql中用户的权如下&#xff1a;select_priv。确定用户是否可以通过select命令选择数据。insert_priv。确定用户是否可以通过insert命令插入数据。update_priv。确定用户是否可以通过update命令修改现有数据。delete_priv。确…

给定两个二叉树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;”…

java导出mysql数据库失败_利用Java进行MySql数据库的导入和导出

利用Java来进行Mysql数据库的导入和导出的总体思想是通过Java来调用命令窗口执行相应的命令。MySql导出数据库的命令如下&#xff1a;mysqldump -uusername -ppassword -hhost -Pport exportDatabaseName > exportPath利用Java调用命令窗口执行命令来进行MySql导入数据库一般…

使用timer控件创建一个简单的报警程序

简介&#xff1a;当我使用计算机工作时&#xff0c;我总是如此的专心致志&#xff0c;以至于每当我过了“一会儿”去看时间时&#xff0c;发现已经过了三个小时&#xff0c;而我却完全没有意识到&#xff01;所以我决定使用我从Code Project学来的C#技术&#xff0c;来创建一个…

jstl格式化日期

<% page contentType"text/html" pageEncoding"GBK"%> <% page import"java.util.*"%> <% taglib prefix"fmt" uri"http://java.sun.com/jsp/jstl/fmt"%> <html><head><title>国际化标…

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

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

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

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

二、穷举搜索法

穷举搜索法是对可能是解的众多候选解按某种顺序进行逐一枚举和检验&#xff0c;并从众找出那些符合要求的候选解作为问题的解。 【问题】 将A、B、C、D、E、F这六个变量排成如图所示的三角形&#xff0c;这六个变量分别取[1&#xff0c;6]上的整数&#xff0c;且均不相同。求…

恢复Ext3下被删除的文件

下面是这个教程将教你如何在Ext3的文件系统中恢复被rm掉的文件。假设我们有一个文件名叫 ‘test.txt’$ls -il test.txt15 -rw-rw-r– 2 root root 20 Apr 17 12:08 test.txt注意&#xff1a;: “-il” 选项表示显示文件的i-node号&#xff08;15&#xff09;&#xff0c;如果你…