标签: string-comparison

C#中的字符串比较性能

有许多方法可以比较字符串.通过一种方式比另一种方式获得性能提升吗?

我总是选择像这样比较字符串:

string name = "Bob Wazowski";
if (name.CompareTo("Jill Yearsley") == 0) {
    // whatever...
}
Run Code Online (Sandbox Code Playgroud)

但我发现很少有人这样做,如果有的话,我看到更多的人只是做一个直接的==比较,据我所知,这是比较字符串的最差方式.我错了吗?

另外,它是如何比较LINQ查询中的字符串的?例如,我喜欢做以下事情:

var results = from names in ctx.Names
              where names.FirstName.CompareTo("Bob Wazowski") == 0
              select names;
Run Code Online (Sandbox Code Playgroud)

但同样,我看到很少有人在他们的LINQ查询中进行字符串比较.

.net c# linq performance string-comparison

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

Go中的不区分大小写的字符串比较

如何以不区分大小写的方式比较字符串?

例如,"Go"和"go"应该被认为是相等的.

string case-insensitive go string-comparison

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

StringComparison.Ordinal和InvariantCulture一样用于测试相等性吗?

从他们的简短摘要描述中,它听起来像字符串比较规则StringComparison.Ordinal,StringComparison.InvariantCulture并且意味着它们如何对字符串进行排序.这就是全部吗?也就是说,这是否意味着我们可以在进行相等比较时使用字符串比较规则?

string.Equals(a, b, StringComparison....)
Run Code Online (Sandbox Code Playgroud)

还有额外的功劳:如果我们进行比较OrdinalIgnoreCase,它会对答案产生影响InvariantCultureIgnoreCase吗?怎么样?

请提供支持论据和/或参考.

.net string culture equality string-comparison

19
推荐指数
2
解决办法
6187
查看次数

bash [[[a] == [a]]]不是真的吗?方括号影响比较结果

谁知道为什么会这样?这是bash的错误吗?

x='mnt:[4026532411]'

[[ $x == $x ]] && echo OK
Run Code Online (Sandbox Code Playgroud)

我期待结果OK,但事实并非如此.

当然,这是有效的

[[ "$x" == "$x" ]] && echo OK
Run Code Online (Sandbox Code Playgroud)

但据我所知,bash [[]]的优点是在比较时不需要引用var.

x='a b'
[[ $x == $x ]] && echo OK
Run Code Online (Sandbox Code Playgroud)

作品.

讽刺的是

x='mnt:[4026532411]'

[[ $x != $x ]] && echo Oh my god
Run Code Online (Sandbox Code Playgroud)

结果是我的天啊

bash string-comparison

19
推荐指数
2
解决办法
598
查看次数

将字符串与“==”进行比较出现意外结果

我有两个向量:

a = strsplit("po","")[[1]]
[1] "p" "o"

b = strsplit("polo","")[[1]]
[1] "p" "o" "l" "o"
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用 来比较它们==。不幸的是,a==b给出了意想不到的结果。

a==b
[1]  TRUE  TRUE FALSE  TRUE
Run Code Online (Sandbox Code Playgroud)

虽然我期望有:

[1]  TRUE  TRUE FALSE  FALSE
Run Code Online (Sandbox Code Playgroud)

那么,是什么原因造成这种情况呢?怎样才能达到预期的效果呢?

该问题似乎与以下事实有关:两个向量的最后一个元素与更改b为 egpolf确实给出了预期结果相同,并且还因为设置bpooo给出了TRUE TRUE FALSE TRUE而不是TRUE TRUE TRUE TRUE

编辑

换句话说,我希望丢失的元素(当长度不同时)作为空值传递(似乎只""给出TRUE TRUE FALSE FALSE,NANULL给出不同的结果)。

c("p","o","","")==c("p","o","l","o")
[1]  TRUE  TRUE FALSE FALSE
Run Code Online (Sandbox Code Playgroud)

string r string-comparison

19
推荐指数
2
解决办法
1482
查看次数

字符串比较和单个字符的字母顺序

我有一个与字符串比较和字符比较相关的问题.

字符>0(零)具有以下十进制值6248相应地.

当我比较以下代码中的两个字符时,我得到了值True(这是正确的)

Console.WriteLine('>' > '0');
Run Code Online (Sandbox Code Playgroud)

当我在下面的代码中比较两个单字符字符串时,我得到的值-1表示">"小于"0"(默认文化是英语)

Console.WriteLine(string.Compare(">", "0"));
Run Code Online (Sandbox Code Playgroud)

而以下代码中的"3"和"1"(5149代码值)的比较返回1(如预期的那样)

Console.WriteLine(string.Compare("3", "1"));
Run Code Online (Sandbox Code Playgroud)

另外,string.Compare(string str1, string str2)文档说:

比较使用当前文化来获取特定于文化的信息,例如套管规则和单个字符的字母顺序

您是否能够解释(或提供一些文档的参考)如何实现字符串比较,例如如何计算单个字符的字母顺序等?

c# string string-comparison

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

Android数据绑定上的字符串比较

我正在尝试与android XML数据绑定进行字符串比较,但我没有得到正确的结果.

在代码中评估我的表达式,我尝试notice.action == "continue"这是错误的.当然,在数据绑定中,这也是错误的.

android:textColor='@{ notice.action == "continue" ? @color/enabledPurple : @color/disabledGray}'
Run Code Online (Sandbox Code Playgroud)

只有notice.action.equals("continue")通过代码才能实现.这是预期的行为.我的问题是我无法通过数据绑定表达式完成此操作,因为它不会运行类似的方法equals.我该怎么做才能将比较表达式替换为另一个有效的比较表达式?

我正在使用本指南.

编辑:我错了,XML中允许使用方法.这样做了:

android:textColor='@{ notice.action.equals("continue") ? @color/enabledPurple : @color/disabledGray}'
Run Code Online (Sandbox Code Playgroud)

data-binding comparison android string-comparison

17
推荐指数
3
解决办法
6692
查看次数

在JavaScript中使用toLowerCase或toUpperCase比较字符串会更好吗?

我正在进行代码审查,我很好奇,如果在尝试比较它们时忽略大小写,那么在JavaScript中将字符串转换为大写或小写更好.

琐碎的例子:

var firstString = "I might be A different CASE";
var secondString = "i might be a different case";
var areStringsEqual = firstString.toLowerCase() === secondString.toLowerCase();
Run Code Online (Sandbox Code Playgroud)

或者我应该这样做:

var firstString = "I might be A different CASE";
var secondString = "i might be a different case";
var areStringsEqual = firstString.toUpperCase() === secondString.toUpperCase();
Run Code Online (Sandbox Code Playgroud)

它似乎"应该"或者只能使用有限的字符集,只有英文字母,所以它比另一个更健壮吗?

作为一个注释,MSDN建议将字符串规范化为大写,但这适用于托管代码(可能是C#和F#,但它们有奇特的StringComparers和基础库):http://msdn.microsoft.com/en-us/library/bb386042. ASPX

javascript internationalization string-comparison

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

为什么string.Compare似乎不一致地处理重音字符?

如果我执行以下语句:

string.Compare("mun", "mün", true, CultureInfo.InvariantCulture)
Run Code Online (Sandbox Code Playgroud)

结果为'-1',表示'mun'的数值低于'mün'.

但是,如果我执行此语句:

string.Compare("Muntelier, Schweiz", "München, Deutschland", true, CultureInfo.InvariantCulture)
Run Code Online (Sandbox Code Playgroud)

我得到'1',表明'Muntelier,Schewiz'应该排在最后.

这是比较中的错误吗?或者,更有可能的是,在排序包含重音的字符串时,我应该考虑一个规则


这是一个问题的原因是,我正在排序一个列表,然后做一个手动二进制过滤器,意味着让每个字符串以'xxx'开头.

以前我使用的是Linq'Fhere'方法,但现在我必须使用另一个人编写的这个自定义函数,因为他说它表现更好.

但是自定义函数似乎没有考虑.NET具有的"unicode"规则.因此,如果我告诉它过滤'mün',它就找不到任何项目,即使列表中的项目以'mun'开头.

这似乎是因为重音字符的顺序不一致,这取决于重音字符后面的字符.


好的,我想我已经解决了这个问题.

在过滤器之前,我根据每个字符串的前n个字母进行排序,其中n是搜索字符串的长度.

c# sorting diacritics string-comparison

15
推荐指数
2
解决办法
3971
查看次数

如何在PHP中找到拼写错误的单词?

我会解释我的问题:

我有一个名为的数据库表country.它有两列:IDname.

当我想要搜索'paris',但拼错字:'pares'('e'代替'i'),我不会得到任何DB结果.

我希望系统能够提出可能有助于搜索的类似单词.

因此,我正在寻找帮助编写一个脚本,该脚本从DB中提出包含类似词语的建议:paris,paredes,...等.

php string similarity string-comparison

15
推荐指数
3
解决办法
6408
查看次数