【问题标题】:How to compare strings case-sensitively?如何区分大小写比较字符串?
【发布时间】:2015-03-18 19:34:51
【问题描述】:

name 变量可能包含 2 个单词:templateTEMPLATE。将这两个词(templateTEMPLATE)与“模板”字符串进行比较得到 TRUE。例如代码:

...
@name = split(/_/,$f,2);
print("$name[0]");
if ("$name[0]" == "template"){
    print ("\n lowercase \n"); 
} elsif ("$name[0]" == "TEMPLATE") {
    print ("\n UPPERCASE \n");
}

结果:

template

lowercase

TEMPLATE

lowercase

如何区分大小写比较字符串?非常感谢您的帮助。

【问题讨论】:

  • @Halona 总是 use strict; use warnings;!并将字符串与eq 进行比较,而不是==
  • 谢谢Biffen,问题已经解决了:)

标签: string perl


【解决方案1】:

在 perl 中,== 运算符用于进行数值比较,而eq 运算符用于进行字符串比较。

如果$name[0] 包含TEMPLATE,那么:

($name[0] == "template")

相当于将00 进行比较,因为在数字上下文中包含非数字数据的字符串将被强制转换为0

如果您在运行时出现警告(脚本顶部的use warnings;),您将看到相关警告。

如果你想要区分大小写的比较,使用它就足够了:

($name[0] eq "template")

作为一个附带问题,无需像您所做的那样将 LHS 写为 "$name[0]"

【讨论】:

  • 谢谢你。你能解释一下什么是“LHS”吗?我无法翻译它..
  • LHS = 左侧,我的意思是,您不需要在变量周围加上引号。仅当您想将变量插入其他文本时才需要引号。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-21
  • 2011-05-27
  • 1970-01-01
相关资源
最近更新 更多