我想检查下面的Value1
是否在前X个字符中包含“abc”。您如何使用if
声明来检查?
var Value1 = "ddabcgghh";
if (Value1.Contains("abc"))
{
found = true;
}
可能在前3个,4个或5个字符内。
答案 0 :(得分:48)
或者如果您需要设置找到的值:
found = Value1.StartsWith("abc")
编辑:鉴于你的编辑,我会做类似的事情:
found = Value1.Substring(0, 5).Contains("abc")
答案 1 :(得分:18)
我会使用IndexOf方法的一个重载
bool found = Value1.IndexOf("abc", 0, 7) != -1;
答案 2 :(得分:10)
更短的版本:
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);
}
}
答案 3 :(得分:7)
if (Value1.StartsWith("abc")) { found = true; }
答案 4 :(得分:6)
使用IndexOf更容易,性能更高。
int index = Value1.IndexOf("abc");
bool found = index >= 0 && index < x;
答案 5 :(得分:3)
你很近......但是使用:
if (Value1.StartsWith("abc"))
答案 6 :(得分:3)
这就是你需要的:
if (Value1.StartsWith("abc"))
{
found = true;
}
答案 7 :(得分:3)
更明确的版本是
found = Value1.StartsWith("abc", StringComparison.Ordinal);
最好始终明确列出您正在进行的特定比较。 String类可能与使用的比较类型有些不一致。
答案 8 :(得分:3)
你也可以使用正则表达式(虽然不太可读)
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);
答案 9 :(得分:2)
Adding on from the answer below i have created this method:
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;
}
it can be used like this:
var unsupportedTypes = new List<string>()
{
"POINT Empty",
"MULTIPOINT",
"MULTILINESTRING",
"MULTIPOLYGON",
"GEOMETRYCOLLECTION",
"CIRCULARSTRING",
"COMPOUNDCURVE",
"CURVEPOLYGON",
"MULTICURVE",
"TRIANGLE",
"TIN",
"POLYHEDRALSURFACE"
};
bool hasInvalidValues = ContainsInvalidStrings(unsupportedTypes,possibleWKT);
you can check for multiple invalid values this way.