标签: string-comparison

比较静态char []和const char*

static char a[255] = "\0";
and
const char *b = " ";
Run Code Online (Sandbox Code Playgroud)

现在,当我将"abc"分配给a和b时,对于一个剩余的252字节保持'\ 0'而对于b则不是那样的.因此,当我尝试比较它们时,它们会变得不同.一种解决方案是直接比较(b)sizeof(和strncmp()).这样做还有其他办法吗?可能是将一个转换为另一个?

提前致谢.

c char string-comparison

2
推荐指数
1
解决办法
1466
查看次数

在Python中比较字符串:字符串X是ASCII,字符串Y是UTF

我有一个相当奇怪的问题:我如何比较字符串(使用Python),其中字符串X是ASCII,字符串Y是UTF还是Unicode?

目前,当我比较字符串时,我收到以下问题:

UnicodeWarning: Unicode equal comparison failed to convert both arguments to Unicode - interpreting them as being unequal
  filteredtext = [t for t in s if t.lower() not in stopwords]
Run Code Online (Sandbox Code Playgroud)

如何确保字符串格式相同?

最好的祝福.

python unicode ascii utf-8 string-comparison

2
推荐指数
1
解决办法
4324
查看次数

为什么不是"Ellie"=="Ellie",其中一个是从用户那里读的?

以下问题来自我几周前的测验并且不正确,但没有提供答案:

请考虑以下代码,其中不包含编译错误:

String secret = "Ellie";
Scanner kb = new Scanner(System.in);
System.out.println("Guess which name I'm thinking of:");
String guess = kb.next();

if (guess == secret)
{
    System.out.println("Wow! You're smart!");
}
else
{
    System.out.println("Wrong!");
    System.out.println("You guessed: " + guess);
    System.out.println("The correct answer was: " + secret);
}
Run Code Online (Sandbox Code Playgroud)

假设用户在提示符处输入"Ellie".会产生什么输出,为什么输出而不是其他输出?

这是我错误的答案:

输出将是else语句"错误!" 因为字母'E'的大写.对此的解决方案是将String secret更改为"ellie"以及用户的猜测,或者可以将ignoreCase关键字写入String secret.

该程序实际输出"错误",我测试了它.

除了简单地知道答案之外,有人可以向我解释这个问题,以便我能更好地理解这个概念吗?

java string string-comparison

2
推荐指数
1
解决办法
139
查看次数

C#字符串比较'ö''oe''o'

可能重复:
如何识别拼写不同的相似单词

在比较这三个字符串:“ voest”,“ vost”和“vöst”(德国文化)时,我试图使它返回true,因为它是同一个词。(实际上,只有oe和ö相同,但是例如对于DB归类CI来说是相同的,这是正确的,因为'vost'是错误键入的'voest')

无论我提供给该方法什么参数,string.Compare(..)/ string.Equals(..)始终返回false。

如何使string.Compare()/ Equals(..)返回true?

c# culture string-comparison

2
推荐指数
1
解决办法
1568
查看次数

实体框架代码优先字符串与 Oracle Db 的比较

我首先使用代码对 Oracle 数据库进行不区分大小写的字符串比较时遇到问题。代码看起来像这样;

String filter = "Ali";
var employee = dbContext.Employees.Where(x => x.Name.Contains(filter)).FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)

上面的代码区分大小写。所以我将 Name 和 filter 都转换为大写;

String filter = "Ali";
filter = filter.ToUpper();
var employee = dbContext.Employees.Where(x => x.Name.ToUpper().Contains(filter)).FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)

一开始似乎一切正常,但后来我意识到当员工姓名或过滤器包含字符“i”时它不起作用。问题是字母 i 在土耳其语中是如何工作的。

在大多数语言中,“i”代表小写字母,“I”代表字符的大写版本。但是在土耳其语中,“i 的大写字母是 '?”,而“I 的小写字母是 '?”。这是一个问题,因为 Oracle 将数据库中的字母“i”大写为“I”。

我们无法访问数据库的字符编码设置,因为它的影响不容易预见。

我想出的是这个,它非常丑陋。

String filterInvariant = filter.ToUpper(CultureInfo.InvariantCulture);
String filterTurkish = filter.ToUpper(CultureInfo.CreateSpecificCulture("tr-TR"));
var employee = dbContext.Employees.Where(x => x.Name.ToUpper().Contains(filterInvariant) || x.Name.ToUpper().Contains(filterTurkish)).FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)

它似乎解决了一些问题,但感觉像是一种蛮力的解决方法,而不是一个可靠的解决方案。在对 Oracle 数据库使用 Code First C# 时,最佳实践或替代方法是什么?

提前致谢

c# linq oracle string-comparison ef-code-first

2
推荐指数
1
解决办法
1748
查看次数

如何在忽略特殊字符的javascript中比较字符串

我正在开发一个应用程序,我被要求比较字符串,但字符串中的文本具有特殊字符(西班牙口音,如“á”、“é”、“í”、“ó”和“ú”)

我已经用 管理了大写toUpperCase(),但是,我仍然想确保我没有重音问题。

我要做的是比较一些已经保存在系统中的单词,并检查是否使用了它们中的任何一个。

我所做的是将输入的单词存储在一个数组中,然后继续在另一个函数中对其进行分析(尚未实现)

这是我存储用户键入的单词的功能(它可能会更改以使其更完整):

function clickNewWord(){
    var theWord = textField.value.toUpperCase();
    ArrayWrittenWords.push(theWord);
    textField.value = "";
}
Run Code Online (Sandbox Code Playgroud)

PD:我会借此机会问:使用口音的正确编码是什么?UTF-8?

javascript unicode string-comparison

2
推荐指数
1
解决办法
4808
查看次数

无论情况如何,字符串比较的Less Than运算符都会产生相同的结果

我想看看Less Than运算符(<)是否适用于字符串.嗯,确实如此.我开始尝试它,事实证明,无论坐姿如何,我都得到了相同的结果.左边的字符串总是小于右边的字符串,即使我交换了字符串.好奇为什么会这样做,我试着查看<操作员实际上为字符串做了什么.我读到它对两个字符串进行了字典比较.尽管如此,这并没有回答为什么我的代码正在做它正在做的事情.例如:

int main () {

if ("A" < "B")
    std::cout << "Yes";
else
    std::cout << "No";

return 0;

}
Run Code Online (Sandbox Code Playgroud)

它会输出Yes.那讲得通.但是当我交换字符串时:

int main () {

if ("B" < "A")
    std::cout << "Yes";
else
    std::cout << "No";

return 0;

}
Run Code Online (Sandbox Code Playgroud)

它仍然会输出Yes.我不知道我现在是否只是无知而且不完全了解这里发生的事情,或者是否有什么问题.

c++ string operators string-comparison

2
推荐指数
1
解决办法
54
查看次数

FilenameUtils.getExtension比较返回false

我对这种比较感到非常困惑FilenameUtils.getExtension.

我有一个文件选择器fc,我想确保扩展名是.csv.

JFileChooser fc = new JFileChooser();
if (fc.showOpenDialog(null) == JFileChooser.APPROVE_OPTION &&
    fc.getSelectedFile().isFile() &&
    FilenameUtils.getExtension(fc.getSelectedFile().getName()) == "csv") {
    // Do stuff
}
Run Code Online (Sandbox Code Playgroud)

经过一些调试后,我发现最后一个语句负责没有执行if语句.

FilenameUtils.getExtension(fc.getSelectedFile().getName()) == "csv"
Run Code Online (Sandbox Code Playgroud)

但是我做了很多,System.out.println()并得到了

System.out.println(FilenameUtils.getExtension(fc.getSelectedFile().getName()));
Run Code Online (Sandbox Code Playgroud)

打印csv.但是当我输入时仍然返回false:

System.out.println(FilenameUtils.getExtension(fc.getSelectedFile().getName()) == "csv");
Run Code Online (Sandbox Code Playgroud)

java csv swing jfilechooser string-comparison

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

当一个可以为null时比较字符串

我正在尝试从包含响应代码"00,02"的服务器获得响应我使用if和else if语句为每个响应执行操作但是获取第一个if语句的空指针

if (str.equalsIgnoreCase("02")){
    Toast.makeText(getApplicationContext(), message, Toast.LENGTH_LONG).show();
}else if(str.equalsIgnoreCase("00")){
    Toast.makeText(getApplicationContext(), message, Toast.LENGTH_LONG).show();
}else{
    Toast.makeText(getApplicationContext(), message, Toast.LENGTH_LONG).show();
}
Run Code Online (Sandbox Code Playgroud)

java android string-comparison

2
推荐指数
1
解决办法
60
查看次数

Bash - 比较两个命令的输出

我有这个代码:

#!/bin/bash

CMDA=$(curl -sI website.com/example.txt | grep Content-Length)

CMDB=$(curl -sI website.com/example.txt | grep Content-Length)

if [ "CMDA" == "CMDB" ];then
  echo "equal";
else
  echo "not equal";
fi
Run Code Online (Sandbox Code Playgroud)

有了这个输出

root@abcd:/var/www/html# bash ayy.sh
not equal
Run Code Online (Sandbox Code Playgroud)

这应该是“相等”而不是“不相等”。我做错了什么?

纳克斯

linux bash terminal curl string-comparison

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