当前位置: 首页 > 知识库问答 >
问题:

Perl6 cmp两个字符串是否可以不区分大小写?

阎晋
2023-03-14

我正在进行排序,并希望控制alpha值的cmp不区分大小写(即。https://perl6.org/archive/rfc/143.html).

有没有:我可能是这个的副词?

共有3个答案

田谦
2023-03-14

您可以传递代码块进行排序。如果块的arity为1,则在进行比较时,它对两个元素都有效。下面是一个示例,显示了上一个答案中的“fc”。

> my @a = <alpha BETA gamma DELTA>;
[alpha BETA gamma DELTA]
> @a.sort
(BETA DELTA alpha gamma)
> @a.sort(*.fc)
(alpha BETA DELTA gamma)
关飞翔
2023-03-14

如果您想要“字典”排序顺序,@timotimo在他们建议colatecoll进行排序时是正确的。

对列表中的任何内容使用collate()进行排序。如果需要自定义排序,请使用中缀运算符。

$ perl6
To exit tyype 'exit' or '^D'
> <a Zp zo zz ab 9 09 91 90>.collate();
(09 9 90 91 a ab zo Zp zz)
> <a Zp zo zz ab 9 09 91 90>.sort: * coll *;
(09 9 90 91 a ab zo Zp zz)
齐修贤
2023-03-14

Perl

由于现有的协议不允许命名值,我们必须添加一个新的,或只写一个子项(也就是说,您可以只使用下面的多个协议,除非有一个可选的只写协议)

这仅在词汇上适用,因此,如果编写此脚本,可能需要根据您所做的操作,将proto/only子脚本标记为可导出。

proto sub infix:<leg> ( \a, \b, *% ){*}

multi sub infix:<leg> ( \a, \b, :ignore-case(:$i) ){
  $i

  ?? &CORE::infix:<leg>( fc(a) , fc(b) )
  !! &CORE::infix:<leg>(    a  ,    b  )
}
say 'a' leg 'A';     # More
say 'a' leg 'A' :i;  # Same
say 'a' leg 'A' :!i; # More

say 'a' leg 'A' :ignore-case; # Same

请注意,:$i:i($i)的缩写,因此这两个命名参数可以写成:
:忽略大小写(:i($i))

此外,我还使用了fc()的子表单,而不是方法表单。因为它允许使用字符串的本机形式,而不会导致自动装箱。

 类似资料:
  • 问题内容: 我想编写一个Java方法,如果字符串是回文,则返回true。 这是我到目前为止的内容: 我的问题是,它不考虑像这样的单词:回文。 在不区分大小写并忽略标点符号的情况下,测试这是否是回文式的最佳方法是什么。 问题答案: 使用此正则表达式删除所有标点和空格并将其转换为小写

  • 需要制作一个密码程序,用户在开始时设置密码,在程序停止前可以输入密码3次。该程序不能区分大小写。 程序按预期打印,但不区分大小写

  • 问题内容: 说我有两个弦, 我要执行s2包含在中的支票退回s1。我可以这样做: 我很确定这是区分大小写的,但是我无法通过阅读文档确定这一点。如果是这样,我想我最好的方法就是这样: 撇开所有这些,是否还有另一种(可能更好)的方法来完成此任务而不关心区分大小写? 问题答案: 是的,包含的内容区分大小写。你可以将标志一起使用,以区分大小写: 编辑:如果s2包含正则表达式特殊字符(其中有很多),则首先引用

  • 问题内容: 宣言: 然后这个 返回true,但如果声明为: 然后返回false,因为比较区分大小写。 如何使该比较不区分大小写? 问题答案: 您可以使用 将字符串转换为所有小写字符

  • 问题内容: 我正在尝试为其中一个根据您的回答做出响应的程序编写代码。我想这样做,以便某些变量不区分大小写。例如,如果我的变量等于我希望它也等于。那可能吗? 到目前为止,这是我的代码: 我不想为每个答案都设置2种情况,其中一种是大写,另一种是小写。 稍微偏离主题的问题。如何关闭扫描仪的资源泄漏? 问题答案: 值得一提: 或简单地使用:

  • 问题内容: 如何以不区分大小写的方式比较字符串? 例如,“ Go”和“ go”应视为相等。 问题答案: https://golang.org/pkg/strings/#EqualFold是您要寻找的功能。它的用法如下(来自链接文档的示例):