小编Dmi*_*nko的帖子

使用通配符匹配字符串

我想匹配字符串与通配符(*),其中通配符表示"任何".例如:

*X = string must end with X
X* = string must start with X
*X* = string must contain X
Run Code Online (Sandbox Code Playgroud)

此外,一些复合用途,如:

*X*YZ* = string contains X and contains YZ
X*YZ*P = string starts with X, contains YZ and ends with P.
Run Code Online (Sandbox Code Playgroud)

有一个简单的算法来做到这一点?我不确定使用正则表达式(虽然这是一种可能性).

为了澄清,用户将在上面输入一个过滤器框(尽可能简单的过滤器),我不希望他们自己编写正则表达式.所以我可以很容易地从上面的符号转换出来的东西会很好.

c# regex string wildcard

52
推荐指数
7
解决办法
8万
查看次数

获取字符串的SHA-256字符串

我有一些string,我想用使用C#的SHA-256哈希函数来哈希它.我想要这样的东西:

 string hashString = sha256_hash("samplestring");
Run Code Online (Sandbox Code Playgroud)

框架中是否有内置功能可以执行此操作?

c# string hash sha256

37
推荐指数
2
解决办法
6万
查看次数

.net 5 中的更改使其在更改 foreach 中的字典值时不会抛出

在 .NET<5 和 .NET Core 3.1 中,以下代码

var d = new Dictionary<string, int> { { "a", 0 }, { "b", 0 }, { "c", 0 } };
foreach (var k in d.Keys) 
{
   d[k]+=1;
}
Run Code Online (Sandbox Code Playgroud)

投掷

System.InvalidOperationException:集合已修改;枚举操作可能无法执行。

当面向 .NET 5 时,代码段不再抛出。

发生了什么变化?

我未能在Breaking changes in .NET 5Performance Improvements in .NET 5 中找到答案。

是不是和什么有关ref readonly T

c# .net-5

33
推荐指数
1
解决办法
1584
查看次数

检测两个字符串之间的差异

我有2个字符串

string a = "foo bar";
string b = "bar foo";
Run Code Online (Sandbox Code Playgroud)

我想从检测的变化 ab.我有什么角色改变,从中获取ab

我认为必须对每个字符进行迭代,并检测它是否被添加,删除或保持相等.所以这是我的表达结果

'f' Remove
'o' Remove
'o' Remove
' ' Remove
'b' Equal
'a' Equal
'r' Equal
' ' Add
'f' Add
'o' Add
'o' Add
Run Code Online (Sandbox Code Playgroud)

结果的类和枚举:

public enum Operation { Add,Equal,Remove };
public class Difference
{
    public Operation op { get; set; }
    public char c { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

这是我的解决方案,但"删除"案例对我来说并不清楚代码的外观

public static List<Difference> CalculateDifferences(string left, string right) …
Run Code Online (Sandbox Code Playgroud)

c# string algorithm

31
推荐指数
2
解决办法
1519
查看次数

可空数组表示法

我是可空的新手。

可能的符号之间是否存在有意义的差异? string?[] str string[]? str 甚至string?[]? str似乎都是有效的

c# arrays nullable-reference-types

30
推荐指数
1
解决办法
1635
查看次数

C#中的float/double Math.Round

float ff = (float)31.15;

double dd = 31.15;

var frst = Math.Round(ff, 1, MidpointRounding.AwayFromZero);

var drst = Math.Round(dd, 1, MidpointRounding.AwayFromZero);
Run Code Online (Sandbox Code Playgroud)

第一次:31.1

第一次:31.2

有人可以解释原因吗?

c# double rounding

18
推荐指数
2
解决办法
1576
查看次数

String.Equals GID返回false?

我的ASP.NET MVC应用程序中有以下C#代码.我尝试string使用该Equals方法比较2 culture = "vi".我的代码如下:

string culture = "vi";

System.Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo(culture);
System.Threading.Thread.CurrentThread.CurrentUICulture = 
  System.Threading.Thread.CurrentThread.CurrentCulture;

var CCC = string.Equals("CategId", "CATEGID", StringComparison.CurrentCultureIgnoreCase);
var xx = string.Equals("TestGID", "TestGID", StringComparison.CurrentCultureIgnoreCase);
var zz = string.Equals("id", "ID", StringComparison.CurrentCultureIgnoreCase);
Run Code Online (Sandbox Code Playgroud)

结果:

CCC = false ;

xx = true;

zz = true;

我不知道为什么CCCfalse.有什么不对的吗?如果我设置culture = id, ko, en等等......那么CCC = true.谁能帮我?

c# asp.net string localization

17
推荐指数
2
解决办法
1018
查看次数

更改文件创建日期不起作用

我正在使用以下内容更改文本文件的创建日期:

using System.IO;

...
DateTime newCreate = new DateTime(year, month, day, hour, minutes, seconds);
File.SetCreationTime("changemydate.txt", newCreate);
Run Code Online (Sandbox Code Playgroud)

然而,这没有任何作用.没有错误消息,但它根本不会更改文件的日期.

我在Dropbox文件夹和随机文件夹中尝试了这个但没有成功

DateTime newCreate对象似乎是正确的.

如果有人能指出我的想法,那就太好了......

c# datetime

13
推荐指数
1
解决办法
2万
查看次数

如何将小数部分转换为十六进制分数?

所以我在想,你如何将小数部分转换为十六进制分数?什么是转换的方法,有没有捷径?

language-agnostic hex decimal

13
推荐指数
1
解决办法
3万
查看次数

为什么 double.IsNegative(double.NaN) 返回 true?

为什么double.IsNegative(double.NaN)意外返回true而按预期double.NaN < 0返回false

c# floating-point double

12
推荐指数
2
解决办法
624
查看次数