StringBuilder.AppendLine在转换为字符串时不起作用

时间:2017-05-10 13:45:42

标签: c# stringbuilder

例如{“1}}值”Abcdefg“。 这将通过前2个条件但未通过以下代码中的第2个。

这是输出的内容:

  

密码至少应包含一个数值(0到9)。   密码应包含至少一个非字母字符(for   例如:!,$,#,%)。

注意:我在.aspx页面中使用标签输出此文本。

newPassword

我希望它输出:

  

密码至少应包含一个数字值(0到9)。

     

密码应包含至少一个非字母字符(for   例如:!,$,#,%)。

我做错了什么?

3 个答案:

答案 0 :(得分:4)

您应该使用<DockPanel> <StackPanel> <!-- Items ... --> <StackPanel.Style> <Style TargetType="StackPanel"> <Setter Property="Orientation" Value="Horizontal"/> <Setter Property="DockPanel.Dock" Value="Top"/> <Style.Triggers> <DataTrigger Binding="{Binding ElementName=grid1,Path=ActualWidth,Converter={StaticResource RestrictedWidthOverflowConverter}}" Value="True"> <Setter Property="Orientation" Value="Vertical"/> <Setter Property="DockPanel.Dock" Value="Left"/> </DataTrigger> </Style.Triggers> </Style> </StackPanel.Style> </StackPanel> <!-- The main content area element --> <Border BorderThickness="5" BorderBrush="Green" Background="Gray"/> </DockPanel> 两次而不是一次:

AppendLine

否则,第一个errorMessage.AppendLine("Password should contain at least one numeric value (0 through 9)."); errorMessage.AppendLine(); 不会产生新行。

答案 1 :(得分:1)

感谢@MartinVerjans和@Ian指出我正确的方向。我找到了解决方案。

我改变了这一行..

errorMessage.AppendLine();

到此..

errorMessage.Append("<br />");

答案 2 :(得分:0)

您的代码确实实际上正如您编码一样生成一个新行。如果您需要多个,则需要多次使用AppendLine()

enter image description here

使用的代码:

namespace ConsoleApp6
{
    using System;
    using System.Text;

    using System.Text.RegularExpressions;

    internal static class Program
    {
        private static string ValidatePasswordComplexity(string newPassword)
        {
            StringBuilder errorMessage = new StringBuilder();

            var hasNumber = new Regex(@"[0-9]+");
            var hasUpperChar = new Regex(@"[A-Z]+");
            var hasLowerChar = new Regex(@"[a-z]+");
            var hasSymbols = new Regex(@"[!@#$%^&*()_+=\[{\]};:<>|./?,-]");
            var criteria = 0;

            if (hasUpperChar.IsMatch(newPassword))
                criteria++;
            else
            {
                errorMessage.Append("Password should contain at least one English uppercase letter (A through Z).");
                errorMessage.AppendLine();
            }

            if (hasLowerChar.IsMatch(newPassword))
                criteria++;
            else
            {
                errorMessage.Append("Password should contain at least one English lowercase letter (a through z).");
                errorMessage.AppendLine();
            }

            if (hasNumber.IsMatch(newPassword))
                criteria++;
            else
            {
                errorMessage.Append("Password should contain at least one numeric value (0 through 9).");
                errorMessage.AppendLine();
            }

            if (hasSymbols.IsMatch(newPassword))
                criteria++;
            else
            {
                errorMessage.Append("Password should contain at least one non-alphabetic character (for example: !, $, #, %).");
            }

            if (criteria >= 3)
                return "Success";
            else
                return errorMessage.ToString();
        }

        internal static void Main()
        {
            var text = ValidatePasswordComplexity("Abcdefg");

            Console.WriteLine(text);
            Console.ReadLine();
        }
    }
}