1

我有用户输入数据时有或没有<p> and </p>.如果他们没有输入,那么我如何确定这一点,然后将其添加到我的字符串中?使用正则表达式之类的东西最有效还是有更简单的方法?

请注意,我只关心字符串的开头和结尾,而不关心两者之间的任何内容。

4

5 回答 5

4

假设您已完成所有相关的修剪和大小写检查:

if (!s.StartsWith("<p>")) {
    s = "<p>" + s;
}

if (!s.EndsWith("</p>")) {
    s += "</p>";
}
于 2013-08-28T06:34:45.747 回答
3

如果我了解您的需求,我会使用一些非常简单的东西,例如

var s = your_user_string;
if (!s.StartsWith("<p>") && !s.EndsWith("</p>"))
  s = String.Format("<p>{0}</p>", s);

OP评论后更新:

var s = !input.StartsWith("<p>", StringComparison.InvariantCultureIgnoreCase) && 
        !input.EndsWith("</p>", StringComparison.InvariantCultureIgnoreCase)
        ? String.Format("<p>{0}</p>", input)
        : input;
于 2013-08-28T06:33:44.090 回答
2

regex可能是一个不错的解决方案,您可以检查

^\s*<p>

对于行的开头和

</p>\s*$

对于行尾,如果您没有遇到匹配项,则可以手动添加它们。

于 2013-08-28T06:34:32.903 回答
0

C# 字符串具有StartsWith()EndsWith()方法。如果你的字符串被命名为input ...

if (!input.StartsWith("<p>")) input = "<p>" + input;
if (!input.EndsWith("</p>")) input += "</p>";
于 2013-08-28T06:35:10.213 回答
-1

Try this;

string input = "UserInput";

                if (input.StartsWith("<p>") == true && input.EndsWith("</p>") == true)
                {
                    //Nothing to do here.
                }
                else if (input.StartsWith("<p>") == true && input.EndsWith("</p>") == false)
                {
                    input = input + "</p>";//Append </p> at end.
                }
                else if (input.StartsWith("<p>") == false && input.EndsWith("</p>") == true)
                {
                    input = "<p>" + input;//Append </p> at beginning.
                }
                else if (input.StartsWith("<p>") == false && input.EndsWith("</p>") == false)
                {
                    input = "<p>" + input + "</p>";//Append </p> at end and <p> at beginning.
                }
于 2013-08-28T06:38:30.670 回答