C#:仅增加字符串的最后一个数字

时间:2015-03-03 04:46:51

标签: c# .net regex char int

我的字符串看起来像这样:

  

1.23.4.34

     

67年4月12日

     

127.3.2.21.3

     

1.1.1.9

这应该是数字的集合,以'分隔。'符号,类似于IP地址。我只需要递增最后一位数字。

预期产出:

  

1.23.4.35

     

68年4月12日

     

127.3.2.21.4

     

1.1.1.10

基本上,增加最后一个数字之后的数字。'符号

我试过了:

char last = numberString[numberString.Length - 1];
int number = Convert.ToInt32(last);
number = number + 1;

如果我使用上面的代码,我只需要在最后一个'之后更换字符。'带有新号码的符号。我怎么做到这一点,好人呢? :)

6 个答案:

答案 0 :(得分:3)

在我看来,一种方法是:

  • 拆分.上的字符串以获取组件数组。
  • 将最终组件转换为整数。
  • 增加整数。
  • 将其变回字符串。
  • 将组件重新组合为.个字符。

例如,参见以下程序:

using System;

namespace ConsoleApplication1 {
    class Program {
        static void Main(string[] args) {
            String original = "1.23.4.34";
            String[] components = original.Split('.');
            int value = Int32.Parse(components[components.Length - 1]) + 1;
            components[components.Length - 1] = value.ToString();
            String newstring = String.Join(".",components);
            Console.WriteLine(newstring);
        }
    }
}

输出“次高”值:

1.23.4.35

答案 1 :(得分:1)

您可以使用string.LastIndexOf()。

string input = "127.3.2.21.4";
int lastIndex = input.LastIndexOf('.');
string lastNumber = input.Substring(lastIndex + 1);
string increment = (int.Parse(lastNumber) + 1).ToString();
string result = string.Concat(input.Substring(0, lastIndex + 1), increment);

答案 2 :(得分:0)

您需要提取的不仅仅是最后一个字符。如果最后一个字符是9然后你加1呢?然后你需要正确地将一个添加到前面的字符。例如,字符串5.29应该被处理为5.30而不仅仅是5.210或5.20。

所以我建议你将字符串分成数字部分。将最后一节解析为整数。递增它然后再次创建字符串。我把它作为海报的练习,实际上写了几行代码。好的做法!

答案 3 :(得分:0)

这样的事情:

var ip = "1.23.4.34";
var last = int.Parse(ip.Split(".".ToCharArray(), 
                StringSplitOptions.RemoveEmptyEntries).Last());
last = last + 1;
ip = string.Format("{0}.{1}",ip.Remove(ip.LastIndexOf(".")) , last);

如果你正在处理IP,那么在.034的情况下会有一些额外的代码,它应该是035而不是35.但是那个逻辑并不复杂。

答案 4 :(得分:0)

这很简单,使用Split()Join()字符串方法

 String test = "1.23.4.34"; // test string

 String[] splits = test.Split('.'); // split by .

 splits[splits.Length - 1] = (int.Parse(splits[splits.Length - 1])+1).ToString(); // Increment last integer (Note : Assume all are integers)

 String answ = String.Join(".",splits); // Use string join to make the string from string array. uses . separator 

 Console.WriteLine(answ); // Answer  : 1.23.4.35

答案 5 :(得分:0)

使用一点 Linq

int[] int_arr = numberString.Split('.').Select(num => Convert.ToInt32(num)).ToArray();

int_arr[int_arr.Length - 1]++;
numberString = "";

for(int i = 0; i < int_arr.Length; i++) {
    if( i == int_arr.Length - 1) {
        numberString += int_arr[i].ToString();
    }
    else {
        numberString += (int_arr[i].ToString() + ".");
    }

}

注意:在手机上无法测试。