我是编程语言的新手。我有一个要求,我必须根据搜索字符串返回记录。
例如,请使用以下三个记录和一个“Cal”搜索字符串:
加州大学
Pascal学院
加利福尼亚大学
我已经尝试了String.Contains
,但这三个都被退回了。如果我使用String.StartsWith
,我只获得#3记录。我的要求是在结果中返回#1和#3。
感谢您的帮助。
答案 0 :(得分:4)
如果您使用的是.NET 3.5或更高版本,我建议您使用LINQ extension methods。查看String.Split
和Enumerable.Any
。类似的东西:
string myString = "University of California";
bool included = myString.Split(' ').Any(w => w.StartsWith("Cal"));
Split
在空格字符处划分myString
并返回字符串数组。 Any
适用于数组,如果任何字符串以"Cal"
开头,则返回true。
如果您不想或不能使用Any
,那么您必须手动循环使用这些词语。
string myString = "University of California";
bool included = false;
foreach (string word in myString.Split(' '))
{
if (word.StartsWith("Cal"))
{
included = true;
break;
}
}
答案 1 :(得分:2)
您可以尝试:
foreach(var str in stringInQuestion.Split(' '))
{
if(str.StartsWith("Cal"))
{
//do something
}
}
答案 2 :(得分:2)
我这样简单:
if(str.StartsWith("Cal") || str.Contains(" Cal")){
//do something
}
答案 3 :(得分:0)
您可以使用正则表达式查找匹配项。这是一个例子
//array of strings to check
String[] strs = {"University of California", "Pascal Institute", "California University"};
//create the regular expression to look for
Regex regex = new Regex(@"Cal\w*");
//create a list to hold the matches
List<String> myMatches = new List<String>();
//loop through the strings
foreach (String s in strs)
{ //check for a match
if (regex.Match(s).Success)
{ //add to the list
myMatches.Add(s);
}
}
//loop through the list and present the matches one at a time in a message box
foreach (String matchItem in myMatches)
{
MessageBox.Show(matchItem + " was a match");
}
答案 4 :(得分:0)
string univOfCal = "University of California";
string pascalInst = "Pascal Institute";
string calUniv = "California University";
string[] arrayofStrings = new string[]
{
univOfCal, pascalInst, calUniv
};
string wordToMatch = "Cal";
foreach (string i in arrayofStrings)
{
if (i.Contains(wordToMatch)){
Console.Write(i + "\n");
}
}
Console.ReadLine();
}
答案 5 :(得分:0)
var strings = new List<string> { "University of California", "Pascal Institute", "California University" };
var matches = strings.Where(s => s.Split(' ').Any(x => x.StartsWith("Cal")));
foreach (var match in matches)
{
Console.WriteLine(match);
}
输出:
University of California
California University
答案 6 :(得分:0)
这实际上是正则表达式的一个很好的用例。
string[] words =
{
"University of California",
"Pascal Institute",
"California University"
}
var expr = @"\bcal";
var opts = RegexOptions.IgnoreCase;
var matches = words.Where(x =>
Regex.IsMatch(x, expr, opts)).ToArray();
“\ b”匹配任何单词边界(标点符号,空格等)。