是否可以查看字符串中的定义长度

时间:2014-03-20 04:46:31

标签: c#

c#中有没有办法查看字符串中定义数量的char?

意思是 - 我有以下号码 需要更改为此数字的336-5010-0000-00-10 - 336-5993-0000-00-10

我只想检查第二段数字是否介于29996000之间

我正在从CSV中读取这些数据,我只是不想要这个声明一百万次

if (columns[0].Contains(“5010”)) columns[0] = columns[0].Replace(“5010”, @”5993”);

3 个答案:

答案 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)

你想要

  1. 将' - '字符上的字符串拆分为名为stringParts
  2. 的字符串[]
  3. 将stringParts [1]转换为整数
  4. 执行步骤2中的整数值的验证
  5. string[] stringParts = columns[0].Split('-');
    int valueOfConcern = Convert.ToInt32(stringParts[1]);
    if (valueOfConcern >= 2999 && valueOfConcern <= 6000)
    {
        //take your action
    }