在SQL Server
我使用此语法删除了引导string
和Zero
:
SUBSTRING(@DELIVERYNO, PATINDEX('%[1-9]%', @DELIVERYNO), LEN(@DELIVERYNO))
@DELIVERYNO
的是ABC-000001
或CDE-000026
删除后,字符串上方的02
将为:1
或26
如何在C#
代码中执行此操作?
答案 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;
这将返回您的字符串的第一个匹配。