相关疑难解决方法(0)

不区分大小写的列表

我需要一个不区分大小写的列表或集合类型的集合(字符串).创建一个最简单的方法是什么?您可以指定要在Dictionary的键上获得的比较类型,但我找不到任何类似的List.

.net c# collections

18
推荐指数
3
解决办法
9715
查看次数

c#在txt文件中搜索字符串

我想在txt文件中找到一个字符串,如果字符串比较,它应该继续读取行,直到我用作参数的另一个字符串.

例:

CustomerEN //search for this string
...
some text wich has details about customer
id "123456"
username "rootuser"
...
CustomerCh //get text till this string
Run Code Online (Sandbox Code Playgroud)

我需要细节与他们合作.

我正在使用linq来搜索"CustomerEN",如下所示:

File.ReadLines(pathToTextFile).Any(line => line.Contains("CustomerEN"))
Run Code Online (Sandbox Code Playgroud)

但现在我仍然坚持阅读行(数据)直到"CustomerCh"来提取细节.

c#

17
推荐指数
2
解决办法
11万
查看次数

如何比较两个字符串及其大小写符号

假设我有2个字符串.第一个字符串是x ="abc",第二个字符串是y ="ABC".当我在c#中写下代码:

if(x == y)
Run Code Online (Sandbox Code Playgroud)

要么

if(x.Equals(y))
Run Code Online (Sandbox Code Playgroud)

返回值为true.如何查看大小写?

c# string visual-studio-2010

16
推荐指数
3
解决办法
2万
查看次数

c#包含不区分大小写的搜索

我有以下代码

var returnData = DemoData.Books.AsQueryable();

if (criteria.Author != string.Empty)
{
    returnData = returnData.Where(x => x.Author.Contains(criteria.Author));
}
Run Code Online (Sandbox Code Playgroud)

如何使where子句不区分大小写?

.net c# asp.net-mvc-3 asp.net-mvc-4

13
推荐指数
2
解决办法
3万
查看次数

无法访问我的扩展方法

寻找一种方法来检查一个字符串是否包含在另一个忽略大写/小写的情况下,我发现:

工作良好.然后,我尝试将它放到我的StringExtensions命名空间.

namespace StringExtensions
{

    public static class StringExtensionsClass
    {
        //... 

        public static bool Contains(this string target, string toCheck, StringComparison comp)
        {
            return target.IndexOf(toCheck, comp) >= 0;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

然后:

using StringExtensions;

...

if (".. a".Contains("A", StringComparison.OrdinalIgnoreCase))
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误:

方法'Contains'没有重载需要'2'参数

我如何解决它?

.net c# string overloading

12
推荐指数
2
解决办法
6611
查看次数

查看字符串是否包含C#中的另一个字符串的最快,不区分大小写的方法是什么?

编辑2:

确认我的性能问题是由于对StringExtensions类的静态函数调用造成的.一旦删除,IndexOf方法确实是实现此目的的最快方法.

查看字符串是否包含C#中的另一个字符串的最快,不区分大小写的方法是什么?我在这里看到了Case不敏感的'Contains(string)'这个帖子的公认解决方案,但是我已经做了一些初步的基准测试,看起来使用该方法会导致在测试时对较大的字符串(> 100个字符)调用较慢的数量级无法找到字符串.

以下是我所知道的方法:

指数:

public static bool Contains(this string source, string toCheck, StringComparison comp)
{
    if (string.IsNullOrEmpty(toCheck) || string.IsNullOrEmpty(source))
        return false;

    return source.IndexOf(toCheck, comp) >= 0;
} 
Run Code Online (Sandbox Code Playgroud)

ToUpper的:

source.ToUpper().Contains(toCheck.ToUpper());
Run Code Online (Sandbox Code Playgroud)

正则表达式:

bool contains = Regex.Match("StRiNG to search", "string", RegexOptions.IgnoreCase).Success;
Run Code Online (Sandbox Code Playgroud)

所以我的问题是,这实际上是平均最快的方式,为什么呢?

编辑:

这是我用来突出性能差异的简单测试应用程序.使用它,我看到ToLower()为16 ms,ToUpper为18 ms,StringExtensions.Contains()为140 ms:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Globalization;

namespace ScratchConsole
{
    class Program
    {
    static void Main(string[] args)
    {
        string input = "";
        while (input != "exit")
        {
            RunTest();
            input …
Run Code Online (Sandbox Code Playgroud)

.net c# string

11
推荐指数
1
解决办法
1万
查看次数

C#中的案例不敏感比较

我正在使用以下代码比较两个字符串

string1.Contains(字符串2)

但我没有得到不区分大小写搜索的结果.此外,我不能使用String.Compare因为我不想匹配整个名称,因为名称非常大.我需要进行不区分大小写的搜索,搜索文本可以是String1包含的任何长度.

例如**************是名称.我在文本框中输入"erm",我得到了结果.但当我输入"期限"时,我得不到任何结果.谁能帮我 :)

c# string comparison

9
推荐指数
4
解决办法
3万
查看次数

Linq IEqualityComparer<string> 忽略大小写

我正在对元素列表进行排序:

var matchEle = listOfElements.Where(e => e.Properties().Any(p => p.Name.Contains("Key", Asking for IEqualityComparer))).First();
Run Code Online (Sandbox Code Playgroud)

我习惯于直接使用 StringComparer、OrdinalIgnoreCase 或 CurrentCultureIgnoreCase,但是在这种情况下调用 Contains() 时,它会要求使用 IEqualityComparer。我想是因为数据结构/级别。我看到了如何设置 IEqualityComparer 的示例,例如

strEqualityComparer = new IEqualityComparer();
Run Code Online (Sandbox Code Playgroud)

并为 strEqualityComparer 定义类,但我不确定除此之外。有人可以帮助我让 linq 语句处理忽略案例吗?

更新:我很清楚这是数据结构的示例:

listOfElements = [element1, element2, etc..]
element1.Properties = ["Prop1", "Key1", "Prop2", "Key2", etc.]
Run Code Online (Sandbox Code Playgroud)

如果其任何属性具有包含关键字的值,我需要提取通过过滤器的元素,在本例中为“Key”,因此它不能是 .Equals 或 IndexOf。

linq iequalitycomparer stringcomparer

9
推荐指数
1
解决办法
1万
查看次数

c#包含字符串的一部分

所以我有一个Materiel-objects列表.在Materiel我有15个get和set方法.我想构建一个搜索方法,循环列表中的所有对象,以及每个Materiel对象中的所有变量.循环部分很容易,但我正在努力使用字符串包含部分.搜索词可以是例如"acto",我应该得到"Tractor"的命中.我已经尝试过使用string-Contains类,但据我所知,它只检查从位置0开始的字符串.所以"Tra"得到一个命中,但不是"acto".

课程中是否有任何构建,或者我应该自己编程?

对不起,解释不好.

我的代码.我现在看到我得到子串的命中,但也有其他结果:)

    protected void Button_search_Click(object sender, EventArgs e)
    {
        string searchTerm = TextBox1.Text.ToString().ToLower();

        TableRow row;
        TableCell cell;

        int rowNumber = 1;

        foreach (Materiell mat in allItems)
        {
            if (searchTerm.Contains(mat.itemID.ToString().ToLower()) ||
                searchTerm.Contains(mat.manufacturer.ToLower()) ||
                searchTerm.Contains(mat.model.ToLower()) ||
                searchTerm.Contains(mat.serialNo.ToLower()) ||
                searchTerm.Contains(mat.dateProd.ToString().ToLower()) ||
                searchTerm.Contains(mat.location.ToLower()) ||
                searchTerm.Contains(mat.mainCategory.ToLower()) ||
                searchTerm.Contains(mat.subCategory.ToLower()) ||
                searchTerm.Contains(mat.dateAcquired.ToString().ToLower()) ||
                searchTerm.Contains(mat.price.ToString().ToLower()) ||
                searchTerm.Contains(mat.ownerID.ToString().ToLower()) ||
                searchTerm.Contains(mat.extra.ToString().ToLower()) ||
                searchTerm.Contains(mat.textComment.ToLower()) ||
                searchTerm.Contains(mat.active.ToString().ToLower()))
            {
                row = new TableRow();
                row.ID = "row" + rowNumber.ToString();
                rowNumber++;

                cell = new TableCell();
                cell.Text = "<a href=\"#\" class=\"opendiv\">" + mat.itemID.ToString() + …
Run Code Online (Sandbox Code Playgroud)

c# string contains

8
推荐指数
1
解决办法
3万
查看次数

如何在 ef core 2 中使包含不区分大小写?

我正在尝试通过搜索字符串过滤列表。它在蓝色笔记的文档中说:

  • IQueryable 为您提供Contains.
  • IEnumerable 为您提供 .NET Framework 实现 Contains
  • SQL Server 实例的默认设置不区分大小写。
  • ToUpper应避免使用显式不区分大小写的调用,因为它会降低性能。

我的过滤如下:

IQueryable<ApplicationUser> customers = 
    from u in _context.Users
    where (u.Customer != null && u.IsActive)
    select u;

if (!string.IsNullOrEmpty(searchString))
{
    customers = customers.Where(s => s.Email.Contains(searchString));
}
Run Code Online (Sandbox Code Playgroud)

然而,这个解决方案区分大小写,我真的不明白为什么:因为我正在使用IQueryable,它应该使用数据库提供程序实现,默认情况下不区分大小写,对吧?

我正在使用 EF Core 2,目前只运行本地 MSSQLLocalDB。

c# sql entity-framework contains entity-framework-core

8
推荐指数
1
解决办法
7642
查看次数