c# - 如何从忽略字符串空格的列表中检索字符串元素?
Posted
技术标签:
【中文标题】c# - 如何从忽略字符串空格的列表中检索字符串元素?【英文标题】:How to retrieve a string element from a list ignoring string spaces in c#? 【发布时间】:2022-01-19 22:21:31 【问题描述】:简单的问题。
我有一个名为“searchTerm”的字符串变量和一个字符串列表。我如何检索与我的 searchTerm 变量匹配而忽略空格的某个元素。我一直在尝试但没有成功的一个例子:
string searchTerm = "The Lord Of The Rings"
List<string> films = new List<string>() "Harry Potter", "Avangers", "The Lord Of The Rings", "Back to the future";
string film = films.where(film => film.Contains(searchTerm, StringComparison.OrdinalIgnoreCase));
此代码不起作用。请理解,在电影列表中,“指环王”字符串在 Lord word 之后有两个空格,而 searchTerm 只是有一个空格。
我尝试了以下方法但没有成功:
string film = films.where(film => film.Replace(" ","").Contains(searchTerm.Replace(" ",""), StringComparison.OrdinalIgnoreCase));
您能帮我找到解决方案吗?谢谢
【问题讨论】:
为什么标题有两个空格?您是否可以选择规范化空格以使其只有一个? @JonathanWood 不。只是试图避免 webapp 中的用户可能会做的事情。他们可以用一堆空格命名事物,甚至不知道自己添加了额外的空格。 问题是,用户可以输入任何内容,包括拼写错误,或者“复仇者联盟”与“复仇者联盟”之间的语法差异,您可能应该使用电影数据库中的 api,并实现自动完成并强制用户从该列表中进行选择。否则你会遇到很多问题。 @BrettJenkins 你是对的!感谢您分享您的想法!实际上,我正在开发一个更复杂的应用程序,并且只是使用一个带有几个电影名称的简单字符串列表来做一个简单的例子。谢谢你的帮助,你是绝对正确的! @JuanCamiloÁvila:那我不知道你为什么接受一个标准化空白的答案,这正是我要建议的。 【参考方案1】:为什么不直接使用简单的正则表达式替换和字符串比较呢? DotNet Fiddle
using System;
using System.Text.RegularExpressions;
using System.Collections.Generic;
using System.Linq;
string searchterm = "The Lord Of The Rings";
List<string> films = new List<string> "Harry Potter", "Avangers", "The Lord Of The Rings", "Back to the future";
string film = films
.FirstOrDefault(f => string.Equals(Regex.Replace(f, "\\s", ""), Regex.Replace(searchterm, "\\s", ""), StringComparison.CurrentCultureIgnoreCase));
【讨论】:
感谢您的帮助! :) 这行得通以上是关于c# - 如何从忽略字符串空格的列表中检索字符串元素?的主要内容,如果未能解决你的问题,请参考以下文章