如何在C#中搜索一些字符串?那么,如果我有字符串“詹姆斯邦德”,我正在寻找“詹姆斯”或“詹姆斯”它将返回true,但如果我正在寻找“詹姆”它将返回false。我该怎么做? 也许我需要一点特定。我需要根据由''分割的单词进行搜索。'见上文。如果我正在寻找jame,它将返回false。如果我使用包含当我搜索jame时它也将返回true?在C中搜索一些字符串#
回答
根据你的问题,这是你会使用。
var ex = "James Bond".ToLower(); //normalize case
bool contains = ex.Split(' ').Any(x => x == "jame");
//FALSE because the *word* "jame" is not found in "james bond"
由于这个问题造成了很多困惑,你必须要记住所有相关的套管。
var ex = "James Bond";
bool contains = ex.Contains("jame");
// FALSE because "jame" is not found in "James Bond" due to case-sensitivity
var ex = "James Bond".ToLower(); //normalize case
bool contains = ex.Contains("jame");
// TRUE because "jame" is FOUND in "james bond" due to normalized case
'contains'将会是'false' –
@Sahuagin这就是他想要的 –
除非当然这一切都与小写有关。 –
使用正则表达式。举一个例子,请参阅:
http://msdn.microsoft.com/en-us/library/ms228595%28v=vs.80%29.aspx
这里的时候,“牛人”是字符串内的任何地方发现的是匹配。在你的情况下,这将是“詹姆斯”。
虽然这是正确的,对于这样一个微不足道的问题,他最好只使用'Contains' –
@KuyaJohn你是对的,他澄清了他的问题。由于使用的语言,这个问题引起了很多混乱。 –
试试看。
方法:1个
string s1 = "The quick brown fox jumps over the lazy dog";
string s2 = "fox";
bool b;
bool c;
b = s1.Contains(s2);
c = s1.Contains("test")
布尔B就返回true。
bool c将返回false。
方法:2
string str = "My Name is james";
int result = str.IndexOf("james");
结果将是-1,如果特定的词不是在句子中找到。
我认为'Contains'并没有真正回答这个问题。如果我有一个字符串'Hello World',并且我想使用'contains'找到'Hell'这个单词,那么它将返回OP不需要的真。他想要像他在这个问题上提到的那样找到整个单词。 –
@KuyaJohn我们可以使用IndexOf(“”)方法获取预期的结果。 –
@Bala好..特别是你为什么选择这个答案我们的沟通..错误.. :) –
可以使用Contains
方法来搜索:
string[] names = new string[] { "joe", "bob", "chris" };
if(names.Contains("james")){
//code
}
我认为'Contains'并没有真正回答这个问题。如果我有一个字符串'Hello World',并且我想使用'contains'找到'Hell'这个单词,那么它将返回OP不需要的真。他想要像他在这个问题上提到的那样找到整个单词。他提到的 –
,他想搜索字符串的一部分,例如“jame”,不完全是“James”,在我的情况下,Contains是个好主意。 –
您可以使用单词边界正则表达式做到这一点。以下代码将向您展示如何使用不区分大小写的搜索进行匹配,并且不会出现类似“jame”的误报。它可以在给定字符串中的任
static void Main(string[] args)
{
string name_to_match = "James Bond";
string word_to_find = "james";
string word_to_not_find = "jame";
string patternToFind = string.Format(@"\b{0}\b", word_to_find);
string patternToNotFind = string.Format(@"\b{0}\b", word_to_not_find);
Regex regexToFind = new Regex(patternToFind, RegexOptions.IgnoreCase);
Regex regexToNotFind = new Regex(patternToNotFind, RegexOptions.IgnoreCase);
bool foundNameExpected = regexToFind.IsMatch(name_to_match);
bool foundNameNotExpected = regexToNotFind.IsMatch(name_to_match);
}
在这种情况下,布尔foundNameExpected将是真实的(因为我们预计在“詹姆斯·邦德”,“詹姆斯”,以配合“詹姆斯”),但foundNameNotExpected会是假的(因为我们不希望“詹姆斯”以匹配“詹姆斯”)。
您必须为此使用Regex
。您不能使用Contains
,因为它不会考虑大小写不敏感并匹配整个单词模式。使用此来代替:
string text = "James bond";
// this will return true
bool result = Regex.IsMatch(text, "\\bjames\\b", RegexOptions.IgnoreCase);
// this will return false
bool result = Regex.IsMatch(text, "\\bjame\\b", RegexOptions.IgnoreCase);
在Regex
格式,上述\b
旨意匹配的字母数字到非字母数字的边界(或反之亦然)。在这种情况下,这可以确保您将整个词匹配james
或jame
,而不是一个部分词。
您可以使用Split
将字符串分隔成分离的部分。例如:
string[] items = "James Bond".Split(' ');
// items == { "James", "Bond" }
您可以使用ToLower
来防止大小写敏感。例如:
string lower = "James Bond".ToLower();
// lower == "james bond"
您可以使用StartsWith
来确定字符串是否以某个子字符串开头。例如:
bool startsWithJame = "James Bond".StartsWith("Jame");
// startsWithJame == true
使用它们放在一起:
bool anyWordStartsWith_jame_NoCaseSensitivity =
"James Bond"
.ToLower()
.Split(' ')
.Any(str => str.StartsWith("jame"));
// anyWordStartsWith_jame_NoCaseSensitivity == true
- 1. C:在字典中搜索字符串
- 2. 在列表中搜索字符串; C#
- 3. 如何在字符串中搜索C++
- 4. 在C++中部分字符串搜索
- 5. C#在网站中搜索字符串
- 6. 在C++中搜索字符串中的字符串
- 7. 搜索字符串C
- 8. C#字符串搜索
- 9. C#,搜索字符串,ASP
- 10. C++搜索字符串
- 11. C# - 搜索字符串
- 12. 在字符串中搜索'$'
- 13. 声明变量分裂字符串在C#和搜索这些字符串
- 14. 的Deezer搜索问题,搜索字符串包括一些特殊字符
- 15. 搜索在Java代码中一些字符串和替换它
- 16. rethinkDB在一个字符串中搜索
- 17. 如何在Visual C++中的另一个字符串中搜索字符串?
- 18. 在搜索字符串在C#中的列表一个混乱的字符串
- 19. C#在整数/字符串中搜索第一个数字
- 20. C字符串搜索获取字符串的一部分
- 21. 搜索字符串中的字符串
- 22. 如何在一个字符串中搜索两个字符串?
- 23. 如何在另一个字符串中搜索字符串
- 24. 在PHP中搜索字符串或字符串的一部分
- 25. 搜索多行字符串,并从字符串中获取一些值php
- 26. 在obj-c中搜索字符串中的一行
- 27. 使用strstr在C中搜索主字符串中的多个字符串C
- 28. Python在字符串中搜索某些关键字
- 29. 字符串C中的搜索字符串#
- 30. 搜索特定字的字符串。 C#
你的问题是模糊的。 “我怎么能做到这一点?”意味着什么?如何搜索“jame”返回false或如何使搜索“jame”返回true。请重新提出您的问题。 –
我已经更新了它。看到我的问题 – albilaga