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')”时,它就工作了。希望它不会让你困惑