相关疑难解决方法(0)

如何使用正则表达式验证电子邮件地址?

多年来,我慢慢开发了一个正则表达式,可以正确验证MOST电子邮件地址,假设他们不使用IP地址作为服务器部分.

我在几个PHP程序中使用它,它大部分时间都可以工作.但是,我不时会遇到使用它的网站遇到问题的人,我最终不得不进行一些调整(最近我意识到我不允许使用4字符TLD).

验证电子邮件的最佳正则表达式是什么?

我已经看到了几个使用函数的解决方案,这些函数使用了几个较短的表达式,但我宁愿在一个简单的函数中使用一个长复杂表达式,而不是在一个更复杂的函数中使用几个短表达式.

regex email validation email-validation string-parsing

3201
推荐指数
44
解决办法
116万
查看次数

为什么OfType <>比Cast <>更快?

回答以下问题: 如何将MatchCollection转换为字符串数组

鉴于两个Linq表达式:

var arr = Regex.Matches(strText, @"\b[A-Za-z-']+\b")
    .OfType<Match>() //OfType
    .Select(m => m.Groups[0].Value)
    .ToArray();
Run Code Online (Sandbox Code Playgroud)

var arr = Regex.Matches(strText, @"\b[A-Za-z-']+\b")
    .Cast<Match>() //Cast
    .Select(m => m.Groups[0].Value)
    .ToArray();
Run Code Online (Sandbox Code Playgroud)

OfType <>由用户Alex进行基准测试,稍微快一些(并由我自己确认).

这对我来说似乎违反直觉,因为我认为OfType <>必须同时进行'is'比较 cast(T).

任何启示将被赞赏为什么这是这种情况:)

c# linq

27
推荐指数
3
解决办法
9043
查看次数

将字符串拆分为具有最大长度的行的最佳方法,而不会破坏单词

我希望将一个字符串分成指定最大长度的行,如果可能的话,不分割任何单词(如果有一个单词超过最大行长,则必须将其拆分).

与往常一样,我敏锐地意识到字符串是不可变的,并且最好使用StringBuilder类.我已经看过将字符串拆分为单词的示例,然后使用StringBuilder类构建行,但下面的代码对我来说似乎"更整洁".

我在描述中提到"最好"而不是"最有效",因为我也对代码的"口才"感兴趣.字符串永远不会很大,通常会分成2行或3行,并且不会发生数千行.

以下代码真的很糟糕吗?

private static IEnumerable<string> SplitToLines(string stringToSplit, int maximumLineLength)
{
    stringToSplit = stringToSplit.Trim();
    var lines = new List<string>();

    while (stringToSplit.Length > 0)
    {
        if (stringToSplit.Length <= maximumLineLength)
        {
            lines.Add(stringToSplit);
            break;
        }

        var indexOfLastSpaceInLine = stringToSplit.Substring(0, maximumLineLength).LastIndexOf(' ');
        lines.Add(stringToSplit.Substring(0, indexOfLastSpaceInLine >= 0 ? indexOfLastSpaceInLine : maximumLineLength).Trim());
        stringToSplit = stringToSplit.Substring(indexOfLastSpaceInLine >= 0 ? indexOfLastSpaceInLine + 1 : maximumLineLength);
    }

    return lines.ToArray();
}
Run Code Online (Sandbox Code Playgroud)

c# string stringbuilder split

11
推荐指数
3
解决办法
8082
查看次数