草庐IT

c# - .NET 中对以 1、10 和 2 开头的字符串进行排序并遵守数字顺序的最短方法是什么?

我需要按如下方式对文件名进行排序:1.log、2.log、10.log但是当我使用OrderBy(fn=>fn)时,它会将它们排序为:1.log,10.log,2.log我显然知道这可以通过编写另一个比较器来完成,但是有没有一种更简单的方法可以将字典顺序更改为自然排序顺序?编辑:目标是获得与在Windows资源管理器中选择“按名称排序”时相同的顺序。 最佳答案 您可以使用Win32CompareStringEx功能。在Windows7上,它支持您需要的排序。您将使用P/Invoke:staticreadonlyInt32NORM_I

c# - 6字符短哈希算法

我的目标是为长度为42个不区分大小写的字母数字字符的字符串生成一个6个字符的短哈希字符串(可能包含字符[A-Z][a-z][0-9])。唯一性是关键要求。安全性或性能并不是那么重要。是否有特定的算法可以给出此结果,或者我应该坚持截断MD5哈希或SHA-1哈希(Likeinthisquestion)?如果是,发生碰撞的概率是多少? 最佳答案 最好的选择是截断众所周知的散列函数(MD5或SHA系列),因为这些算法具有统计上良好的散列值均匀分布(并且还使用完整的散列,而不仅仅是6个字符)。现在一些碰撞概率的计算-Numberoflette

c# - 配置 .NET WCF UTF-8 反序列化器以修改/丢弃非最短格式字符而不是抛出异常?

我们有一个通过WCF托管的SOAP网络服务。我们偶尔从其中接收数据的客户端之一使用非最短格式对UTF-8进行编码(有关这方面的一些信息,请参阅http://www.unicode.org/versions/corrigendum1.html)。修改客户端并不容易,因为我们的代码没有对这些非最短形式的字符进行编码。相反,我们希望编辑WCF服务以丢弃这些字符,将它们替换为其他占位符字符,甚至接受非最短形式的字符。对于我们的用例,这些中的任何一个都是可以接受的,尽管前一个选项是首选,因为它们减少了任何安全风险。查看堆栈跟踪:System.ServiceModel.Dispatcher.Net

c# - 通过 bool 函数排序列表的更短方法

我有一个需要以特定方式排序的列表。我目前是这样解决的:varfiles=GetFiles().OrderByDescending(x=>x.Filename.StartsWith("ProjectDescription_")).ThenByDescending(x=>x.Filename.StartsWith("Budget_")).ThenByDescending(x=>x.Filename.StartsWith("CV_")).ToArray();这些文件将被合并到一个PDF文件中,这里的重点是某些文件应该放在开头,其余的放在最后。我想知道是否有更好的方法来编写这个“模式”,因为它

c# - 如何创建简单的短哈希值? C#

如何创建简单的哈希值?例如,我有字符串“TechnologyIsCool”以及如何从该字符串中获取散列值?我想做一些像这样的方法:publicstringHashThis(stringvalue){stringhashResult=string.Empty;...returnhashResult;}并像这样调用这个方法:stringhash=HashThis("TechnologyIsCool");然后是像“5qazws”这样的散列。 最佳答案 使用String.GetHashCodeMethodpublicstaticvoidMa

C# 短错误 : Negating the minimum value of a twos complement number is invalid

我在我的项目中遇到过这个错误,该项目涉及使用数字音频信号。所以我一直在获取振幅值,最近遇到了这个错误。调试时遇到的振幅值为“-32768”时会出现这种情况。我将这些值存储在一个short[]数组中。我有一种预感,它与最大值/最小值有关(我使用Math.Abs​​),但我不确定如何处理它。有人可以帮忙吗?谢谢! 最佳答案 16位有符号整数(short)取值介于-32,768和32,767之间。在16位有符号整数中不可能对-32768求反或获取绝对值。该值(32,768)大于最大可能的正值(32,767)。在不了解您正在使用的算法的更多

c# - 在 C# 中将字节数组转换为短数组

我目前正在读取一个文件,并希望能够将从文件中获取的字节数组转换为一个短数组。我该怎么做? 最佳答案 使用Buffer.BlockCopy.创建字节数组一半大小的短数组,并将字节数据复制到:short[]sdata=newshort[(int)Math.Ceiling(data.Length/2)];Buffer.BlockCopy(data,0,sdata,0,data.Length);这是迄今为止最快的方法。 关于c#-在C#中将字节数组转换为短数组,我们在StackOverflow上

c# - 在枚举参数中使用短划线 (-) 字符

publicenumTimeFormat{@12-hour,@24-hour}你好,我使用newtonsoft反序列化器将json字符串反序列化为对象。JsonDeserializer检查枚举参数名称。如果它与json字符串相同。它将字符串转换为枚举。我可以在枚举中使用破折号、减号(-)字符作为枚举参数吗?我试着像上面那样使用,但我无法编译项目。然后我尝试了这个。[JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))]publicenumTimeFormat{[JsonProperty("12-hou

c# - 用空字符串初始化字符串数组的最短方法是什么?

对我来说很意外newstring[count];填充了null。所以我想到了varemptyStrings=Enumerable.Range(0,count).Select(a=>String.Empty).ToArray();这是非常冗长的。没有捷径吗? 最佳答案 您可以使用Enumerable.Repeat:string[]strings=Enumerable.Repeat(string.Empty,count).ToArray();(但请注意,创建一个大小正确的字符串数组并进行循环会提供更好的性能。)

c# - 最短公共(public)前缀的 LINQ 表达式

谁能帮我用一个很好的LINQ表达式来转换另一个列表中的字符串列表,该列表只包含字符串的最短不同公共(public)前缀?前缀的分隔符是..示例:["A","A.B.D","A","A.B","E","F.E","F","B.C"]转到:["A","E","F","B.C"]已删除:“A.B.D”和“A.B”,因为前缀“A”已经在列表中“A”因为是重复的“F.E”因为“F”已经在列表中谢谢! 最佳答案 给你:fromsetin(fromiteminlistselectitem.Split('.')).GroupBy(x=>x[0])s