C# 如果缺少字符串,如何将

C# 如果缺少字符串,如何将,c#,regex,C#,Regex,附加到字符串的开头和结尾? 我有一些用户输入数据时使用或不使用和。如果他们没有输入,那么我如何确定这一点,然后将其添加到我的字符串中?使用像regex这样的东西是最有效的还是有更简单的方法 请注意,我只关心字符串的开头和结尾,而不关心字符串之间的任何内容 如果我了解你的需要,我会用一些非常简单的东西,比如 var s = your_user_string; if (!s.StartsWith("<p>") && !s.EndsWith("</p>"))

附加到字符串的开头和结尾? 我有一些用户输入数据时使用或不使用和。如果他们没有输入,那么我如何确定这一点,然后将其添加到我的字符串中?使用像regex这样的东西是最有效的还是有更简单的方法


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

如果我了解你的需要,我会用一些非常简单的东西,比如

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;

如果我理解你的需要,我会用一些很简单的东西,比如

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;
正则表达式可能是一个很好的解决方案 你可以查一下

^\s*<p>
对于行的开头和

</p>\s*$
对于行尾,如果没有遇到匹配项,则可以手动添加它们。

regex可能是一个不错的解决方案 你可以查一下

^\s*<p>
对于行的开头和

</p>\s*$

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

假设您已完成所有相关的修剪和案例检查:

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

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

假设您已经完成了所有相关的修剪和案例检查:

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

if (!s.EndsWith("</p>")) {
    s += "</p>";
}
C字符串有StartsWith和EndsWith方法。如果您的字符串名为input

C字符串有StartsWith和EndsWith方法。如果您的字符串名为input

试试这个

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.
                }
试试这个

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.
                }


用户为什么要输入

如果用户只输入这两个选项中的一个,该怎么办?如果允许使用HTML,例如富编辑器,那么您可能需要处理更多的场景,例如清理,但也可以将输入作为片段或文档的一般格式良好。换言之,解析器可能非常有用。如果您确实使用start/ends with string方法,至少使用不区分大小写的比较选项。如果他输入

,会发生什么?大写:用户为什么要输入

如果用户只输入这两个选项中的一个,该怎么办?如果允许使用HTML,例如富编辑器,那么您可能需要处理更多的场景,例如清理,但也可以将输入作为片段或文档的一般格式良好。换言之,解析器可能非常有用。如果您确实使用start/ends with string方法,至少使用不区分大小写的比较选项。如果他输入

,会发生什么?上面的case@JonathanHobbs但是这个解决方案还处理了引导/尾随空白,我认为这比只检查字符串的边缘要好。“Tim Maybe,不是OP要求它这样工作的。”对于regex来说,这仍然感觉太过分了P为什么不干脆删减输入?@dirtydexter如果你担心一次删减+两次支票对性能的影响,而不是两次正则表达式检查,你可能在效率方面做得太多了…@dirtydexter:我不会担心投票结果本身会对你的声誉产生更大的影响。你可以通过解释为什么选择正则表达式来避免它们,例如空格问题;关于效率的说法在没有度量的情况下是值得怀疑的。FWIW,编译的正则表达式可以非常非常快,但是字符串方法是针对高度优化库的内部调用。不管哪一个速度更快,你都应该小心地让橡皮布语句像正则表达式一样是最简单和最有效的解决方案。@ JONAAANHOBBS:但是这个解决方案也处理领先/尾随空白,我认为这比仅仅检查字符串的边缘要好。“Tim Maybe,不是OP要求它这样工作的。对于regex来说,这仍然感觉太过分了P为什么不干脆删减输入?@dirtydexter如果你担心一次删减+两次支票对性能的影响,而不是两次正则表达式检查,你可能在效率方面做得太多了…@dirtydexter:我不会担心投票结果本身会对你的声誉产生更大的影响。你可以通过解释为什么选择正则表达式来避免它们,例如空格问题;关于效率的说法在没有度量的情况下是值得怀疑的。FWIW,编译的正则表达式可以非常非常快,但是字符串方法是针对高度优化库的内部调用。不管哪一个更快,你都应该小心,像regex这样的总括语句是最简单、最有效的解决方案。我非常喜欢这个答案。有没有一种方法可以让这种情况通过使用把它放在一条线上?我非常喜欢这个答案。有没有一种方法可以让这种情况通过使用我想你的意思是使用string的实例方法而不是静态方法,例如s.StartsWith我想你的意思是使用string的实例方法而不是静态方法,例如s.StartsWith这有点过于复杂了。这里实际上只有两个案例需要检查——参见其他答案,例如我的、埃文的和马可的。这有点过于复杂了。这里只有两个案例需要检查-请参阅其他答案,例如我的、埃文的和马可的