我正在尝试完成NerdDinner教程-作为练习,我会将其转换为VB。我不是很深入,在通过C# very语句之后,我被困在共享的VB数组初始值上。
static IDictionary<string, Regex> countryRegex =
new Dictionary<string, Regex>() {
{ "USA", new Regex("^[2-9]\\d{2}-\\d{3}-\\d{4}$")},
{ "UK", new
Regex("(^1300\\d{6}$)|(^1800|1900|1902\\d{6}$)|(^0[2|3|7|8]{1}[0-
9]{8}$)|(^13\\d{4}$)|(^04\\d{2,3}\\d{6}$)")},
{ "Netherlands", new Regex("(^\\+[0-9]{2}|^\\+[0-
9]{2}\\(0\\)|^\\(\\+[0-9]{2}\\)\\(0\\)|^00[0-9]{2}|^0)([0-9]{9}$|[0-9\\-
\\s]{10}$)")},有没有人可以帮我用VB写这个?
Public Shared countryRegex As IDictionary(Of String, Regex) = New Dictionary(Of String, Regex)() {("USA", New Regex("^[2-9]\\d{2}-\\d{3}-\\d{4}$"))}此代码有一个错误,因为它不接受字符串和正则表达式作为数组的项。
谢谢
发布于 2009-06-29 12:33:09
我不相信VB9支持集合初始值设定项,尽管我认为它是will be in VB10。
最简单的选择可能是编写一个共享方法,该方法创建字典,然后返回字典,并从变量初始化器调用该共享消息。因此在C#中,它将是:
static IDictionary<string, Regex> countryRegex = CreateCountryRegexDictionary();
static IDictionary<strnig, Regex CreateCountryRegexDictionary()
{
Dictionary<string, Regex>() ret = new Dictionary<string, Regex>();
ret["USA"] = new Regex("^[2-9]\\d{2}-\\d{3}-\\d{4}$");
// etc
return ret;
}希望你会发现它更容易翻译成VB :)
发布于 2009-06-29 12:41:52
我的VB转换的完整性:
Public Shared Function GetIDictionary() As IDictionary(Of String, Regex)
Dim countryRegex As IDictionary(Of String, Regex) = New Dictionary(Of String, Regex)()
countryRegex("USA") = New Regex("^[2-9]\\d{2}-\\d{3}-\\d{4}$")
countryRegex("UK") = New Regex("(^1300\\d{6}$)|(^1800|1900|1902\\d{6}$)|(^0[2|3|7|8]{1}[0-9]{8}$)|(^13\\d{4}$)|(^04\\d{2,3}\\d{6}$)")
countryRegex("Netherlands") = New Regex("(^\\+[0-9]{2}|^\\+[0-9]{2}\\(0\\)|^\\(\\+[0-9]{2}\\)\\(0\\)|^00[0-9]{2}|^0)([0-9]{9}$|[0-9\\-\\s]{10}$)")
Return countryRegex
End Function再次欢呼乔恩
发布于 2009-10-01 07:55:42
如果它有任何用途,这是我完整的VB.Net NerdDinner PhoneValidator包括英国和爱尔兰移动电话
Public Class PhoneValidator
Private Shared Function GetIDictionary() As IDictionary(Of String, Regex)
Dim countryRegex As IDictionary(Of String, Regex) = New Dictionary(Of String, Regex)()
countryRegex("USA") = New Regex("^[2-9]\\d{2}-\\d{3}-\\d{4}$")
countryRegex("UK") = New Regex("(^1300\\d{6}$)|(^1800|1900|1902\\d{6}$)|(^0[2|3|7|8]{1}[0-9]{8}$)|(^13\\d{4}$)|(^04\\d{2,3}\\d{6}$)")
countryRegex("Netherlands") = New Regex("(^\\+[0-9]{2}|^\\+[0-9]{2}\\(0\\)|^\\(\\+[0-9]{2}\\)\\(0\\)|^00[0-9]{2}|^0)([0-9]{9}$|[0-9\\-\\s]{10}$)")
countryRegex("Ireland") = New Regex("^((07|00447|\+447)\d{9}|(08|003538|\+3538)\d{8,9})$")
'
Return countryRegex
End Function
Public Shared Function IsValidNumber(ByVal phoneNumber As String, ByVal country As String) As Boolean
If country IsNot Nothing AndAlso GetIDictionary.ContainsKey(country) Then
Return GetIDictionary(country).IsMatch(phoneNumber)
Else
Return False
End If
End Function
Public ReadOnly Property Countries() As IEnumerable(Of String)
Get
Return GetIDictionary.Keys
End Get
End Property
End Classhttps://stackoverflow.com/questions/1058033
复制相似问题