标签: string-comparison

常量字符串地址

我的程序中有几个相同的字符串常量:

const char* Ok()
{
  return "Ok";  
}

int main()
{
  const char* ok = "Ok";
}
Run Code Online (Sandbox Code Playgroud)

是否保证它们具有相同的地址,即我可以编写以下代码吗?我听说GNU C++优化了字符串,所以它们具有相同的地址,我可以在程序中使用该功能吗?

int main()
{
  const char* ok = "Ok";
  if ( ok == Ok() ) // is it ok?
  ;
}
Run Code Online (Sandbox Code Playgroud)

c++ constants string-comparison

6
推荐指数
2
解决办法
328
查看次数

比较版本为字符串

将版本号作为字符串进行比较并不容易......
"1.0.0.9">"1.0.0.10",但它不正确.
正确地做到这一点的显而易见的方法是解析这些字符串,转换为数字并作为数字进行比较.有没有其他方式更"优雅"地做到这一点?例如,boost :: string_algo ......

c++ string-comparison version-numbering

6
推荐指数
2
解决办法
7642
查看次数

如何在MS Access中使InStr案例敏感

如何在MS Access中使InStr区分大小写?

我想要显示以下内容 0

 msgbox InStr("In Here", "here")
Run Code Online (Sandbox Code Playgroud)

相反,我得到了4.

我试过添加vbBinaryCompare

 msgbox InStr("In Here", "here", vbBinaryCompare)
Run Code Online (Sandbox Code Playgroud)

但它抱怨类型不匹配.

string ms-access vba string-comparison

6
推荐指数
2
解决办法
6243
查看次数

如何在大型数据集中有效地识别相似但不相同的字符串?

假设我有数千个字符串,我需要识别最常见的组.

这是一个示例数据集:http://pastebin.com/XGijjsfE

此数据集的前10行代表我所追求的字符串类型.虽然在现实生活中,这些会与其他人混在一起.

一种策略是循环遍历每个字符串,并使用字符串比较工具将其与其他字符串进行比较,并跟踪高度相似性.这里有一些伪php代码来说明这一点:

<?php
$arr = explode("\n",http://pastebin.com/XGijjsfE); // I know. Just pseudocode here!
$winners = array(); // store close matches here
foreach ($arr as $k1 => $line1) {
    foreach ($arr as $k2 => $line2) {
        if ($k1 != $k2) {
            $lev = levenshtein($line1, $line2);
            if ($lev < 10) { // assume 10 is a reasonable start to learn and tune later
                $winners[] = array($line1,$line2,$lev);
            }
        }
    }
}
print_r($winners);
?>
Run Code Online (Sandbox Code Playgroud)

但是在100k行乘以100k行时,这可能非常昂贵.

在更大的数据集中识别类似字符串的更有效方法是什么?

我在LAMP环境中,字符串当前在MySQL表中.但答案可以在Shell,PHP,Python,MySQL等中执行.

这是数据集:

Lorem ipsum …
Run Code Online (Sandbox Code Playgroud)

php similarity string-comparison levenshtein-distance

6
推荐指数
1
解决办法
144
查看次数

读外国人物

我有一个数据库,其中包含我正在阅读R(3.02)的英超足球运动员的名字,但是当涉及到名字中包含外国角色的球员(变音符号,口音等)时遇到了困难.下面的代码说明了这一点:

PlayerData<-read.table("C:\\Users\\Documents\\Players.csv",quote=NULL, dec = ".",,sep=",", stringsAsFactors=F,header=T,fill=T,blank.lines.skip = TRUE)
Test<-PlayerData[c(33655:33656),] #names of the players here are "Cazorla" "Özil"

Test[Test$Player=="Cazorla",] #Outputs correct details
Test[Test$Player=="Ozil",] # Can not find data '0 rows> (or 0-length row.names)'
<

#Example of how the foreign character is treated:
substr("Özil",1,1)
[1] "Ã"
substr("Özil",1,2)
[1] "Ö"
substr("Özil",2,2)
[1] "
substr("Özil",2,3)
[1] "z
Run Code Online (Sandbox Code Playgroud)

我已经尝试更换字符,如下所述:R:替换字符串中的外来字符,但由于我的示例中的重音字符似乎被读作两个单独的字符,我认为它不起作用.

我会很感激任何建议或解决方法.

该文件可在此处下载.

string encoding r character-encoding string-comparison

6
推荐指数
1
解决办法
517
查看次数

如何正确比较命令行参数?

我正在尝试编写一个在main中接受参数的C代码; 因此当我在cmd中写一些字符串时,程序会在其中执行某些操作.但我做错了什么,我找不到它.

这是代码:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char * argv[]){   //File name is main.c
    if(argc != 3)
        printf("Wrong!!!!!!!!!");
    else
        if (argv[1] == "-s")
            girls();  //Prints "Girls"
        else if(argv[1] == "-k")
            boys();   //Prints "Boys"
        else
            printf("OMG!!");
}
Run Code Online (Sandbox Code Playgroud)

在cmd;

gcc -o gender main.c

gender -s pilkington

我输入那些命令.总是输出

"我的天啊!!"

哪部分错了?

c string string-comparison strcmp command-line-arguments

6
推荐指数
1
解决办法
6086
查看次数

Umlaute的文化感知字符串比较

我需要用德语比较两个字符串,以检查它们是否相等,只是在使用umlaute时有所不同.例如"Jörg"应与"Joerg"相同.

所以我尝试过:

var ci = new CultureInfo("de-DE");
int compareResult = ci.CompareInfo.Compare("jörg", "joerg", CompareOptions.IgnoreNonSpace);
Run Code Online (Sandbox Code Playgroud)

以及

int compareResult = String.Compare("jörg", "joerg", true, ci);
Run Code Online (Sandbox Code Playgroud)

(或者那两个是平等的吗?)

但是,这不起作用并将返回1.所有的变形金刚ö,ü和ä都是一样的.如果我比较strassestraße以同样的方式,这确实有效并返回0?!

谢谢你的任何想法!这篇文章表明我应该工作.

c# string-comparison .net-4.5

6
推荐指数
1
解决办法
1845
查看次数

String.Starts的性能使用StringComparison.OrdinalIgnoreCase

我用String.StartsWith遇到了一个奇怪的性能"工件".

使用OrdinalIgnoreCase的String.StartsWith似乎比使用String.StartsWith更快,而没有指定StringComparison.(快2-4倍)

但是,使用没有StringComparison的String.Equals比使用OrdinalIgnoreCase时更快地检查相等性.(虽然速度大致相同)

问题是为什么?为什么他们在这两种情况下表现不同?

这是我使用的代码:

    public static void Test()
    {
        var options = new[] { "asd/klfe", "qer/jlkfe", "p33/ji", "fkjlfe", "asd/23", "bleash", "quazim", "ujv/3", "jvd/kfl" };
        Random r;

        const int trialSize = 100000;
        const int trials = 1000;
        Stopwatch swEqOp = new Stopwatch();
        Stopwatch swEq = new Stopwatch();
        Stopwatch swEqOrdinal = new Stopwatch();
        Stopwatch swStartsWith = new Stopwatch();
        Stopwatch swStartsWithOrdinal = new Stopwatch();
        for (int i = 0; i < trials; i++)
        {
            {
                r = new Random(1);
                swEqOp.Start();
                for (int …
Run Code Online (Sandbox Code Playgroud)

c# string startswith string-comparison

6
推荐指数
1
解决办法
983
查看次数

switch 语句使用哪个字符串比较器?

执行语句时如何比较字符串switch?线程/计算机的当前文化是否会影响switch评估?我养成了在比较字符串时总是指定比较器的习惯,因此如果能够确认这一点那就太好了。

我怀疑是这样StringComparer.Ordinal,但我找不到任何相关文档。

c# string cultureinfo string-comparison switch-statement

6
推荐指数
1
解决办法
1381
查看次数

如何在我的 ASP Net Core 5.0 项目中比较“ß”和“ss”?

我有一个带有 MVC 配置的 ASP.Net Core 项目。我使用 ASP.Net Core 版本 5.0\n我的母语是德语,因此我们的数据库也充满了德语单词,例如单词“fu\xc3\x9fball”(这意味着足球或足球,具体取决于您来自哪里) 。

\n

正如您所看到的,这个单词有一个 \xc3\x9f。在德语中,这个“\xc3\x9f”基本上相当于“ss”。因此,如果我有字符串“fu\xc3\x9fball”,如果有人也搜索“fussball”,我希望能够找到它。

\n

我知道 ASP.Net Core 具有良好的本地化和全球化选项,但我似乎无法弄清楚这一点。

\n

考虑以下代码:

\n
var currCulture = CultureInfo.CurrentCulture.Name; // = "de-AT"\n\nvar str1 = "fu\xc3\x9fball";\nstr1.StartsWith("fuss"); //returns false\nstr1.StartsWith("fuss", StringComparison.InvariantCulture); //returns false\nString.Equals("\xc3\x9f", "ss", StringComparison.InvariantCulture); //returns false\n\n
Run Code Online (Sandbox Code Playgroud)\n

由于我使用英语语言的 Windows PC,并且我在另一个 Stackoverflow 问题中读到 CultureInfo 依赖于操作系统,因此我决定将以下内容插入到我的Startup.cs-File 中,正如此 Stackoverflow 问题中所建议的那样

\n
var cultureInfo = new CultureInfo("de-AT"); //de-AT for Austria, i tried with de-DE too for germany, but the result was the same\ncultureInfo.NumberFormat.CurrencySymbol = "\xe2\x82\xac";\n\nCultureInfo.DefaultThreadCurrentCulture = …
Run Code Online (Sandbox Code Playgroud)

c# asp.net string-comparison asp.net-core-localization

6
推荐指数
1
解决办法
694
查看次数