Существуют коммерческие программы, что формат и проверяет международные телефонные номера, как этот , который даже проверяет на действительные коды области в некоторых странах. Для Северной Америки NANPA обеспечивает некоторые ресурсы для проверки кодов области.
Если вы можете преобразовать это в VB.NET (что тривиально), я ' d сказать, что у вас все в порядке (если не можете, используйте этот или любой другой полезный инструмент):
/// <summary>
/// The Typing monkey generates random strings - can't be static 'cause it's a monkey.
/// </summary>
/// <remarks>
/// If you try hard enough it will eventually type some Shakespeare.
/// </remarks>
class TypingMonkey
{
private const string legalCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
static Random random = new Random();
/// <summary>
/// The Typing Monkey Generates a random string with the given length.
/// </summary>
/// <param name="size">Size of the string</param>
/// <returns>Random string</returns>
public string TypeAway(int size)
{
StringBuilder builder = new StringBuilder();
char ch;
for (int i = 0; i < size; i++)
{
ch = legalCharacters[random.Next(0, legalCharacters.Length)];
builder.Append(ch);
}
return builder.ToString();
}
}
Тогда все, что вам нужно сделать, это:
TypingMonkey myMonkey = new TypingMonkey();
string randomStr = myMonkey.TypeAway(size);
Почему бы вам не рандомизировать число от 1 до 26 и не получить относительную букву.
Что-то вроде этого:
Dim output As String = ""
Dim random As New Random()
For i As Integer = 0 To 9
output += ChrW(64 + random.[Next](1, 26))
Next
Edit: ChrW добавлено .
Edit2: Также иметь числа
Dim output As String = ""
Dim random As New Random()
Dim val As Integer
For i As Integer = 0 To 9
val = random.[Next](1, 36)
output += ChrW(IIf(val <= 26, 64 + val, (val - 27) + 48))
Next
C #
public string RandomString(int length)
{
Random random = new Random();
char[] charOutput = new char[length];
for (int i = 0; i < length; i++)
{
int selector = random.Next(65, 101);
if (selector > 90)
{
selector -= 43;
}
charOutput[i] = Convert.ToChar(selector);
}
return new string(charOutput);
}
VB.Net
Public Function RandomString(ByVal length As Integer) As String
Dim random As New Random()
Dim charOutput As Char() = New Char(length - 1) {}
For i As Integer = 0 To length - 1
Dim selector As Integer = random.[Next](65, 101)
If selector > 90 Then
selector -= 43
End If
charOutput(i) = Convert.ToChar(selector)
Next
Return New String(charOutput)
End Function
Как насчет:
Private Function GenerateString(len as integer) as String
Dim stringToReturn as String=""
While stringToReturn.Length<len
stringToReturn&= Guid.NewGuid.ToString().replace("-","")
End While
Return left(Guid.NewGuid.ToString(),len)
End Sub
Вот служебный класс, который мне нужен для генерации случайных паролей. Он похож на Typing Monkey от JohnIdol, но обладает большей гибкостью на тот случай, если вы хотите, чтобы сгенерированные строки содержали прописные, строчные, числовые или специальные символы.
public static class RandomStringGenerator
{
private static bool m_UseSpecialChars = false;
#region Private Variables
private const int m_MinimumLength = 8;
private const string m_LowercaseChars = "abcdefghijklmnopqrstuvqxyz";
private const string m_UppercaseChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
private const string m_NumericChars = "123456890";
private const string m_SpecialChars = "~?/@#!£$%^&*+-_.=|";
#endregion
#region Public Methods
/// <summary>
/// Generates string of the minimum length
/// </summary>
public static string Generate()
{
return Generate(m_MinimumLength);
}
/// <summary>
/// Generates a string of the specified length
/// </summary>
/// <param name="length">The number of characters to generate</param>
public static string Generate(int length)
{
return Generate(length, Environment.TickCount);
}
#endregion
#region Private Methods
/// <summary>
/// Generates a string of the specified length using the specified seed
/// </summary>
private static string Generate(int length, int seed)
{
// Generated strings must contain at least 3 of the following character groups: uppercase letters, lowercase letters
// numerals, and special characters (!, #, $, £, etc)
// The generated string must be at least 4 characters so that we can add a single character from each group.
if (length < 4) throw new ArgumentException("String length must be at least 4 characters");
StringBuilder SB = new StringBuilder();
Random rand = new Random(seed);
// Ensure that we add all of the required groups first
SB.Append(GetRandomCharacter(m_LowercaseChars, rand));
SB.Append(GetRandomCharacter(m_UppercaseChars, rand));
SB.Append(GetRandomCharacter(m_NumericChars, rand));
if (m_UseSpecialChars)
SB.Append(GetRandomCharacter(m_SpecialChars, rand));
// Now add random characters up to the end of the string
while (SB.Length < length)
{
SB.Append(GetRandomCharacter(GetRandomString(rand), rand));
}
return SB.ToString();
}
private static string GetRandomString(Random rand)
{
int a = rand.Next(3);
switch (a)
{
case 1:
return m_UppercaseChars;
case 2:
return m_NumericChars;
case 3:
return (m_UseSpecialChars) ? m_SpecialChars : m_LowercaseChars;
default:
return m_LowercaseChars;
}
}
private static char GetRandomCharacter(string s, Random rand)
{
int x = rand.Next(s.Length);
string a = s.Substring(x, 1);
char b = Convert.ToChar(a);
return (b);
}
#endregion
}
Чтобы использовать его:
string a = RandomStringGenerator.Generate(); // Generate 8 character random string
string b = RandomStringGenerator.Generate(10); // Generate 10 character random string
Этот код написан на C #, но должен быть довольно простым для преобразования в VB.NET с помощью преобразователя кода .