我想检查下面的Value1
是否在前X个字符中包含"abc"。您将如何使用if
语句来检查?
var Value1 = "ddabcgghh";
if (Value1.Contains("abc"))
{
found = true;
}
它可能在前3、4或5个字符中。
我想检查下面的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);
您可以通过这种方式检查多个无效值。