我有字符串" 10-1283-01"长度变得相同,我想检查的是那个字符串,如" 10-xxxx-0x" 只希望前3个字符像" 10 - "最后但只有一个两个字符,如" -0"。
所以我正在潜水/子串下面的东西。对于first3,它给了我必需的字符串但是对于lastPart,它给了我ArgumentOutOfRangeException。
请告诉我如何获得-0字符串?在此先感谢
string partnoveri = lpartno.Text;
string first3=partnoveri.Substring(0, 3);
string lastPart = partnoveri.Substring(partnoveri.IndexOf("-0"),partnoveri.Length-1);
答案 0 :(得分:1)
C#Substring方法不是
String.Substring( int startIndex, int endIndex )
正如您的代码所示,而不是
String.Substring( int startIndex [, int numberofCharacters ] )
鉴于此,如果你正在寻找两个角色,你可以使用:
string lastPart = partnoveri.Substring(partnoveri.IndexOf("-0"), 2);
话虽这么说,我选择了@KMC的正则表达式解决方案。虽然Substring
将适用于您的示例,但如果第四个字符为零,它将失败,如10-0283-01
答案 1 :(得分:1)
为什么不使用正则表达式?
using System;
using System.Threading;
using System.Threading.Tasks;
using System.Linq;
using System.Collections.Generic;
using Newtonsoft;
using Newtonsoft.Json;
using Newtonsoft.Json.Serialization;
using Newtonsoft.Json.Linq;
using System.Text.RegularExpressions;
class Program
{
static void Main(string[] args)
{
try
{
var pattern = "[0-9]{2}-[0-9]{4}-[0-9]{2}";
var input = "10-1283-01";
var matches = Regex.Matches(input, pattern);
if(Regex.IsMatch(input, pattern))
{
Console.WriteLine("MATCH");
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}
答案 2 :(得分:0)
要接收最后两个字符,您可以使用下面的子字符串:
partnoveri.Substring(partnoveri.Length-2,2);
对于这种情况,您也可以使用正则表达式。
答案 3 :(得分:0)
刚刚阅读了 C# 8.0 规范中的 Ranges 介绍。
阅读这个问题:
<块引用>我有字符串“10-1283-01”,长度相同,我想 检查是否像“10-xxxx-0x”这样的字符串只需要前 3 个字符 像“10-”和最后一个两个字符像“-0”。
一个可以做(因为 c# 8.0 规范):
string partno = "10-1283-01";
Console.WriteLine($"{partno[0..3]}"); // returns "10-"
Console.WriteLine($"{partno[^3..^1]}"); // returns "-0"