English 中文(简体)
如何确定字符串是否包含特定的子串在前X个字符内
原标题:
  • 时间:2009-02-01 15:48:19
  •  标签:

我想检查下面的Value1是否在前X个字符中包含"abc"。您将如何使用if语句来检查?

var Value1 = "ddabcgghh";

if (Value1.Contains("abc"))
{
    found = true;
}

它可能在前3、4或5个字符中。

问题回答

或如果您需要设置found的值:

found = Value1.StartsWith("abc")

编辑:根据您的编辑,我会做类似的事情:

found = Value1.Substring(0, 5).Contains("abc")

我会使用IndexOf方法的其中一个重载。

bool found = Value1.IndexOf("abc", 0, 7) != -1;

翻译成中文:简短版本:

found = Value1.StartsWith("abc");

对不起,但我是一个坚持写更少代码的人。


考虑到提问者的编辑,我实际上会选择接受偏移量的方案,这可能是重载 StartsWith 的扩展方法的一个很好的位置。

public static class StackOverflowExtensions
{
    public static bool StartsWith(this String val, string findString, int count)
    {
        return val.Substring(0, count).Contains(findString);
    }
}
if (Value1.StartsWith("abc")) { found = true; }

使用IndexOf更简单且性能更高。

int index = Value1.IndexOf("abc");
bool found = index >= 0 && index < x;

这是你所需要的:

if (Value1.StartsWith("abc"))
{
found = true;
}

You re close... but use: if (Value1.StartsWith("abc"))

一个更加详细的版本是:

found = Value1.StartsWith("abc", StringComparison.Ordinal);

最好总是明确列出您正在进行的特定比较。 String类在使用的比较类型方面可能有些不一致。

你也可以使用正则表达式(虽然不太易读)

string regex = "^.{0,7}abc";

System.Text.RegularExpressions.Regex reg = new System.Text.RegularExpressions.Regex(regex);
string Value1 = "sssddabcgghh";

Console.WriteLine(reg.Match(Value1).Success);

从下面的回答中添加,我已经创建了这个方法:

    public static bool ContainsInvalidStrings(IList<string> invalidStrings,string stringToCheck)
    {

        foreach (string invalidString in invalidStrings)
        {
            var index = stringToCheck.IndexOf(invalidString, StringComparison.InvariantCultureIgnoreCase);
            if (index != -1)
            {
                return true;
            }
        }
        return false;
    }

它可以这样使用:

            var unsupportedTypes = new List<string>()
        {
            "POINT Empty",
            "MULTIPOINT",
            "MULTILINESTRING",
            "MULTIPOLYGON",
            "GEOMETRYCOLLECTION",
            "CIRCULARSTRING",
            "COMPOUNDCURVE",
            "CURVEPOLYGON",
            "MULTICURVE",
            "TRIANGLE",
            "TIN",
            "POLYHEDRALSURFACE"
        };


            bool hasInvalidValues =   ContainsInvalidStrings(unsupportedTypes,possibleWKT);

您可以通过这种方式检查多个无效值。





相关问题
热门标签