我有一个多行文本框,其中包含以逗号分隔的10位数手机号码。我需要在至少100个手机号码组中实现字符串。
100个手机号码将以99个逗号分隔。我想编写的是分割包含逗号小于100的字符串
{{1}}
通过使用上面的代码,我可以获得100个数字,因为100个数字将具有 10 * 100(对于手机号码)+99(对于逗号)文本长度。但问题是用户可能输入错误的手机号码,如9位数甚至11位数。
任何人都可以指导我如何实现这一目标。 提前谢谢。
答案 0 :(得分:3)
您可以使用此扩展方法将它们放入max-100数字组:
public static IEnumerable<string[]> SplitByLength(this string str, string[] splitBy, StringSplitOptions options, int maxLength = int.MaxValue)
{
var allTokens = str.Split(splitBy, options);
for (int index = 0; index < allTokens.Length; index += maxLength)
{
int length = Math.Min(maxLength, allTokens.Length - index);
string[] part = new string[length];
Array.Copy(allTokens, index, part, 0, length);
yield return part;
}
}
样品:
string text = string.Join(",", Enumerable.Range(0, 1111).Select(i => "123456789"));
var phoneNumbersIn100Groups = text.SplitByLength(new[] { "," }, StringSplitOptions.None, 100);
foreach (string[] part in phoneNumbersIn100Groups)
{
Assert.IsTrue(part.Length <= 100);
Console.WriteLine(String.Join("|", part));
}
答案 1 :(得分:0)
您有几个选择,
IntTC
之类的东西就可以了。或者,您可以使用regex.split或regex.match并匹配模式。假设你的数字在带有前导逗号或空格的字符串中,这样的东西应该可以正常工作
正则表达式正则表达式=新正则表达式(&#34;(\ s |,)\ d {10},)&#34 ;;
string [] nums = regex.Split(numbers);
答案 2 :(得分:0)
这可以通过简单的Linq代码解决
public static IEnumerable<string> SplitByLength(this string input, int groupSize)
{
// First split the input to the comma.
// this will give us an array of all single numbers
string[] numbers = input.Split(',');
// Now loop over this array in groupSize blocks
for (int index = 0; index < numbers.Length; index+=groupSize)
{
// Skip numbers from the starting position and
// take the following groupSize numbers,
// join them in a string comma separated and return
yield return string.Join(",", numbers.Skip(index).Take(groupSize));
}
}