#vb.net
#vb.net
Вопрос:
Мне нужно отфильтровать номер телефона по оператору сотовой связи в vb.net пример:
- оператор 1 первые 3 цифры 811
- оператор 2 первые 3 цифры 812
- оператор 3 первые 3 цифры 822
из этого
- 8113634563
- 8122345235
- 8226786767
к этому
-
оператор 1 первые 3 цифры 811 8113634563
-
оператор 2 первые 3 цифры 812 8122345235
-
оператор 3 первые 3 цифры 822 8226786767
Комментарии:
1. Что вы хотите сделать, если вы получите более одного телефонного номера, начинающегося с одних и тех же трех символов, скажем, 8113634563 и 8112222222?
Ответ №1:
Проверьте этот пример:
Sub Main()
Dim phones As String() = {"8113634563", "8113777763", "8122345235", "8226786767"}
Dim s As Dictionary(Of String, List(Of String)) = phones.GroupBy(Function(ph) ph.Substring(0, 3)).ToDictionary(Function(g) g.Key, Function(g) g.Select(Function(p) p).ToList)
For Each item In s
Console.WriteLine("{0}", item.Key)
For Each p In item.Value
Console.WriteLine("operator first 3 digit {0} {1}", item.Key, p)
Next
Console.WriteLine()
Next
Console.ReadLine()
End Sub
Ответ №2:
Вы можете использовать LINQ.
Просто предположим, что каждое число является строкой, которая является в свою очередь IEnumerable<char>
( IEnumerable(Of Char)
в VB.NET ).
Затем вы можете выполнить цикл по списку чисел, применить Enumerable.Take(Integer)
функцию со значением 3 к каждому элементу и сравнить результат (наилучшим было бы a select case
) с 811
, 812
и 822
. Затем вы можете присвоить текущее число соответствующему оператору