Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 删除前导零和连字符前的字符串_C# - Fatal编程技术网

C# 删除前导零和连字符前的字符串

C# 删除前导零和连字符前的字符串,c#,C#,如何对字符串执行多种格式设置 例如,按以下方式做是行不通的 var Id = (from p in db.vwIds.Where(p => p.OperationalNumber.Substring(p.OperationalNumber.IndexOf("-") + 1).TrimStart('0') == id) group p by p.ID into g sel

如何对字符串执行多种格式设置

例如,按以下方式做是行不通的

var Id = (from p in db.vwIds.Where(p => p.OperationalNumber.Substring(p.OperationalNumber.IndexOf("-") + 1).TrimStart('0')  == id)
                              group p by p.ID into g
                              select g.Key).ToList();
我不能对一个字符串执行多个操作吗

我所说的不起作用是指它不能从“vwIds”中提取Id。当我将id的值硬编码为“001”并删除“.TrimStart('0')”时,它会拉入id,而不是其他

基本上,我传递的id是一个没有前导零的数字,例如“1”、“2”、“112”等 vwIds中的ID格式为:“JEE-001”、“Dee-002”等

当我硬编码id的值为“001”时

如果您将
id
硬编码为“001”,则它将永远不会等于调用了
.TrimStart('0')
的任何id。让我们假设
p.OperationalNumber.IndexOf(“-”+1)
的计算结果为“001”。在其上调用“trimstart”将使其变为“1”。“1”不等于“001”,因此不包括在内

我猜您也需要在ID上调用
.TrimStart('0')
,或者更好的方法是,将两个字符串解析为数字,然后比较它们的数值,而不是字符串值

当我硬编码id的值为“001”时

如果您将
id
硬编码为“001”,则它将永远不会等于调用了
.TrimStart('0')
的任何id。让我们假设
p.OperationalNumber.IndexOf(“-”+1)
的计算结果为“001”。在其上调用“trimstart”将使其变为“1”。“1”不等于“001”,因此不包括在内


我猜您也需要在ID上调用
.TrimStart('0')
,或者更好的做法是,将两个字符串解析为数字,然后比较它们的数值,而不是字符串值。

您可以使用多个where子句获得所需内容,我已经尝试过了,它工作得非常好

        var id = db.vwIds.Where(p => p.OperationalNumber.Contains('-'))
            .Where(p => p.OperationalNumber.Replace(" ", "").Split('-')[1].TrimStart('0') == "23")
            .GroupBy(p => p.ID).Select(g => g.Key);
.Contains('-')
验证您是否具有正确的格式“xxx-yyyy”

Replace(“,”)
删除空白

另一件事,如果您确定所有的数字都包含一个不需要修剪或替换的int(“,”),那么解析id时最好不要将其与字符串进行比较


你可以使用多个where子句得到你想要的,我已经试过了,它工作得很好

        var id = db.vwIds.Where(p => p.OperationalNumber.Contains('-'))
            .Where(p => p.OperationalNumber.Replace(" ", "").Split('-')[1].TrimStart('0') == "23")
            .GroupBy(p => p.ID).Select(g => g.Key);
.Contains('-')
验证您是否具有正确的格式“xxx-yyyy”

Replace(“,”)
删除空白

另一件事,如果您确定所有的数字都包含一个不需要修剪或替换的int(“,”),那么解析id时最好不要将其与字符串进行比较


“不管用”什么不管用?在我看来这是完全正确的。如果它没有做你想要它做的事情,那么你需要描述你想要它做的事情。(理想情况下使用样本输入和当前/期望输出)始终描述“不工作”。我不知道它是否编译或产生错误的结果,或者…@Servy,你是对的,我读错了代码。=)@Servy我已经更新了上面的问题一个字符串的例子会很好。“不起作用。”什么不起作用?在我看来这是完全正确的。如果它没有做你想要它做的事情,那么你需要描述你想要它做的事情。(理想情况下使用样本输入和当前/期望输出)始终描述“不工作”。我不知道它是否编译或产生错误的结果,或者…@Servy,你是对的,我读错了代码。=)@Servy我已经更新了上面的问题一个字符串的例子会很好。你弄错了,我尝试在与我的id比较时删除前导的零,但这不起作用。当我声明一个变量并将id的值硬编码为“001”并从代码中删除“TrimStart('0')”时,它就工作了。希望这不会让你感到困惑。你弄错了,我试着在与我的id比较时删除前导的零,这不起作用。当我声明一个变量并将id的值硬编码为“001”并从代码中删除“TrimStart('0')”时,它就工作了。希望它不会让你困惑