c#中有没有办法查看字符串中定义数量的char?
意思是 -
我有以下号码
需要更改为此数字的336-5010-0000-00-10
- 336-5993-0000-00-10
我只想检查第二段数字是否介于2999
和6000
之间
我正在从CSV中读取这些数据,我只是不想要这个声明一百万次
if (columns[0].Contains(“5010”)) columns[0] = columns[0].Replace(“5010”, @”5993”);
答案 0 :(得分:2)
string test = "336-5010-0000-00-10";
string foo = Regex.Replace(test, @"(\d+\-)(2999|[3-5][0-9]{3}|6000)((-\d+){3})", "${1}5993${3}");
另类疯狂的LINQ答案:
string foo2 = string.Join("-", from number in test.Split('-').Select((str, index) => new { str = str, index = index })
let num = Convert.ToInt32(number.str)
select number.index == 1 && num >= 2999 && num <= 6000 ? "5993" : number.str);
http://dotnetfiddle.net/yzROoK
编辑:更明显的正则表达式。
答案 1 :(得分:1)
string numberStr = "336-5010-0000-00-10";
int number = int.Parse(numberStr.Substring(4, 4));
numberStr.Substring(4, 4)
仅为您提供从第4个字符开始的四位数字,int.Parse()
转换为数字。
然后你可以测试number
是否在你指定的范围之间,替换它等等。
答案 2 :(得分:1)
你想要
string[] stringParts = columns[0].Split('-');
int valueOfConcern = Convert.ToInt32(stringParts[1]);
if (valueOfConcern >= 2999 && valueOfConcern <= 6000)
{
//take your action
}