在C#中修剪前导字符串和零

时间:2018-04-19 06:51:07

标签: c#

SQL Server我使用此语法删除了引导stringZero

SUBSTRING(@DELIVERYNO, PATINDEX('%[1-9]%', @DELIVERYNO), LEN(@DELIVERYNO))
@DELIVERYNO

ABC-000001CDE-000026

删除后,字符串上方的02将为:126

如何在C#代码中执行此操作?

2 个答案:

答案 0 :(得分:1)

作为一个班轮:

var Result = DeliveryNo.Substring(4).TrimStart('0');

如果你想测试它,你可以先删除前缀,因为它有固定长度,然后删除所有尾随零:

var DeliveryNo = "ABC-000001";

var WithoutPrefix = DeliveryNo.Substring(4);
Console.WriteLine(WithoutPrefix); // Displays 000001


var NoZeroes = WithoutPrefix.TrimStart('0');
Console.WriteLine(NoZeroes); // Displays 1

一些信息:

  • .Substring(4)将从字符串4开始到字符串结尾的子字符串,即从第一个数字到最后一个数字
  • .TrimStart('0')将删除字符串左侧的所有零

如果你有一个清单,你可以这样做:

using System;
using System.Linq;
using System.Collections.Generic;

...

var DeliveryNumbers = new List<string>() {"VLD-002546","VIV-012345"};

var Result = DeliveryNumbers.Select(f=> f.Substring(4).TrimStart('0')).ToList();

Result.ForEach(f=> Console.WriteLine(f));

或者,如果您希望将结果作为单个字符串以逗号分隔:

Console.WriteLine(String.Join(",", Result));

你有:

  • Select会对您List
  • 的所有项目执行操作
  • f=> f.Substring(4).TrimStart('0')只是意味着:如果我致电f List提供给Select的任何项目,我想要用它来提取子字符串然后删除所有尾随零
  • Result.ForEach(f=> Console.WriteLine(f));只是一个foreach循环,写成一行,我写的是让你测试结果

答案 1 :(得分:0)

您仍然可以使用正则表达式:

//System.Text.RegularExpressions.Regex 
resultString = Regex.Match(subjectString,@"[1-9]+\d*").Value;

这将返回您的字符串的第一个匹配。