给定一个包含数字的字符串数组,需要判断数组中每项包含的数字是否连续增长。
如果数组项中的非数字字符有规律,例如给数字增加固定的前缀、后缀等,则较快的判断方式是提前按规则生成包含连续数字的字符串数组,直接判断给定的字符串数组是否与其相同即可。
string[] definedClass = { "第1课", "第2课", "第3课", "第4课", "第5课", "第6课", "第7课", "第8课", "第9课", "第10课" };string[] testArray1 = { "第1课", "第2课", "第8课", "第4课", "第X课", "第6课" };bool compareResult = true;for(int i = 0; i < definedClass.Length && i<testArray1.Length; i++)
{if (testArray1[i] != definedClass[i]);{compareResult = false; break;}
}Console.WriteLine(compareResult? "testArray1为连续数组":"testArray1为非连续数组");compareResult = true;
string[] testArray2 = { "第1课", "第2课", "第3课", "第4课" };for (int i = 0; i < definedClass.Length && i < testArray2.Length; i++)
{if (testArray2[i] != definedClass[i]) {compareResult = false;break;}
}
Console.WriteLine(compareResult? "testArray2为连续数组":"testArray2为非连续数组");
如果数组项中的非数字字符没有规律,则需将每项字符串转换为数字,然后判断数字是否连续,根据参考文献1-2给出的做法,可以使用正则表达式去除字符串中的非数字字符,然后再判断数字连续性。示例代码如下:
string[] testArray1 = { "1bc", "afda2afd", "@#8", "4你好", "hello6课" };
Console.WriteLine(PublicMethod.IsContinuousArray(testArray1) ? "testArray1为连续数组":"testArray1为非连续数组");string[] testArray2 = { "a1课", "第2c", "fda第3课", "第4课abc" };
Console.WriteLine(PublicMethod.IsContinuousArray(testArray2) ? "testArray2为连续数组" : "testArray2为非连续数组");public static bool IsContinuousArray(string[] oriArray)
{List<int> lstArray = new List<int>();foreach (string s in oriArray){lstArray.Add(Convert.ToInt32(Regex.Replace(s, @"[^0-9]+", "")));}for (int i = 1; i < lstArray.Count; i++){if (lstArray[i] - lstArray[i - 1] != 1){return false;}}return true;
}
参考文献:
[1]https://blog.csdn.net/weixin_41480563/article/details/140916070
[2]https://blog.51cto.com/qubernet/5160884