在字符串中拆分数字和非数字

时间:2014-06-09 04:15:35

标签: c# regex string

如果我有一个像"1234-"这样的字符串值,那么我需要拆分为非{1}的非数字字符,并在非数字字符后添加数字值- 。稍后我必须将值更新为1。然后程序将检查最后更新的值"1234-1",然后每次增加1并存储以备将来使用。如果字符串中没有非数字,则程序将使用数字字符串递增1。

以下是字符串和输出值的一些示例

1234-1

之前我使用过以下代码。

代码

Ex Str1                           Output

2014-                             2014-1
2014-1                            2014-2
AAA                               AAA1
ABC-ABC                           ABC-ABC1
12345                             12346
1234AA                            1234AA1

对此有任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

也许是这样的:

   string s = "123419";
   string res = null;
   char ch = s[s.Length - 1];
   if(char.IsDigit(ch)) // handle numbers
   {
      res = s.Substring(0,s.Length - 1);   
      string suffix = null;
       // special case
      if(ch == '9'){
         suffix = "10";
      }
      else
      {
         suffix = (++ch).ToString();
      }
      res += suffix;
   }
   else 
   {
      res = string.Format("{0}1", s);
   }

答案 1 :(得分:0)

试试这段代码:

private string Incrementvalue(string str)
{
    string retVal;
    if (str.Contains(DELIMITER))
    {
        string[] parts = str.Split(new char[] { DELIMITER }, 2);
        string origSuffix = parts[1];
        string newSuffix;

        int intSuffix;
        if (int.TryParse(origSuffix, out intSuffix))
            //Delimiter exists and suffix is already a number: Increment!                
            newSuffix = (intSuffix + 1).ToString();   
        else
            //Delimiter exists and suffix is NTO number: Add a "1" suffix.    
            newSuffix = origSuffix + 1;                

            retVal = parts[0] + DELIMITER + newSuffix;
    }
    else
    {

        int temp;
        if (int.TryParse(str, out temp))
        {
            //Delimiter does not exists and the input is a number: Increment last digit! 
            string newSuffix = (int.Parse(str[str.Length - 1].ToString()) + 1).ToString();
            retVal = str.Substring(0, str.Length - 1) + newSuffix;
            retVal = str.Substring(0, str.Length - 1) + newSuffix;
        }
        else
        {
            //Delimiter does not exists and the input is NOT a number: Add a "1" suffix. 
            retVal = str + "1";
        }        
    }
    return retVal;
}

代码可以用更紧凑的方式编写,但认为这将更具可读性并且可以正常工作......