我的字符串看起来像这样:
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;
如果我使用上面的代码,我只需要在最后一个'之后更换字符。'带有新号码的符号。我怎么做到这一点,好人呢? :)
答案 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() + ".");
}
}
注意:在手机上无法测试。