标签: case-insensitive

字符串列表中的不区分大小写匹配

我正在尝试解析F#应用程序中的命令行参数.我正在使用参数列表上的模式匹配来完成它.就像是:

let rec parseCmdLnArgs = 
  function
  | [] -> { OutputFile = None ; OtherParam = None }
  | "/out" :: fileName :: rest -> let parsedRest = parseCmdLnArgs rest
                                  { OutputFile = Some(fileName) with parsedRest }
Run Code Online (Sandbox Code Playgroud)

问题是我想让"/out"匹配大小写不敏感,同时保留其他东西的情况.这意味着我无法改变输入并匹配输入的小写版本(这将丢失fileName案例信息).

我考虑了几个解决方案:

  • 诉诸when条款并不理想.
  • 每次匹配一个元组,第一个将是实际参数(我将保存以进行进一步处理并将通配符匹配),第二个将是在此类匹配中使用的小写版本.这看起来比第一次更糟.
  • 使用活动模式但看起来过于冗长.我必须ToLower "/out"在每件事之前重复一些事情.

做这些东西有更好的选择/模式吗?我认为这是一个常见的问题,应该有一个很好的方法来处理它.

string f# case-insensitive pattern-matching match

17
推荐指数
1
解决办法
2966
查看次数

语言区分大小写的目的是什么?

可能重复:
作为区分大小写的编程语言有什么优势吗?
为什么许多语言区分大小写?

我一直想知道的是,为什么语言设计为区分大小写?

我的豌豆大脑无法理解它为什么有用的任何可能的原因.

但我确信那里有一个.在任何人说出来之前,通过区分大小写调用dogDog区分变量实际上是非常糟糕的做法,对吧?

任何评论都赞赏,也许还有任何关于此事的历史!我对案例敏感性一般不敏感,但对案例敏感性的敏感性很敏感所以让我们保持所有的答案和评论是民间的!

language-features programming-languages language-design case-sensitive case-insensitive

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

假设Unicode和不区分大小写,模式".."是否匹配"FfIsS"?

这听起来像个笑话,但我可以证明这一点.

假设:

  • Dot匹配任何单个字符.
  • 不区分大小写的模式匹配s且仅当它匹配时才匹配s.toUpperCase().

以下所有内容都非常符合逻辑并且在Java中保留:

  • "?".matches(".") LATIN SMALL LIGATURE FFI(U + FB03)是一个字符,因此它必须匹配
  • "ß".matches(".") LATIN SMALL LETTER SHARP S(U + 00DF)是一个字符,因此它必须匹配
  • "?".toUpperCase().equals("FFI") 按Unicode标准(没有资本连字FFI)
  • "ß".toUpperCase().equals("SS") 按照Unicode标准(有一个大写的S,但它没有被使用)
  • "FfI".toUpperCase().equals("FFI") 明显
  • "sS".toUpperCase.equals("SS") 明显

因此,假设正则表达式中的第一个点代表?第二个点,则正则ß表达式必须匹配"FFISS",并且因为不区分大小写也是"FfIsS".

真的希望有一些错误,否则正则表达式会变得非常不可用.

问题:

  • 我的"证明"有什么问题?
  • 如果我的第二个假设不成立,那么"不区分大小写"究竟意味着什么?

java regex unicode case-insensitive case-folding

17
推荐指数
1
解决办法
1213
查看次数

SOLR案例不敏感搜索

我在SOLR搜索中遇到了问题.
我有这样的数据:
在此输入图像描述

我使用solr admin使用如下查询查找此数据:

address_s:*Nadi*
Run Code Online (Sandbox Code Playgroud)

并找到了那些数据.但是当我使用这个查询时:

address_s:*nadi*
Run Code Online (Sandbox Code Playgroud)

它没有找到任何东西.
我在Google上搜索,并找到了使用以下脚本创建字段的答案:

<fieldType name="c_text" class="solr.TextField">
    <analyzer type="index">
        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
    </analyzer>

    <analyzer type="query">
        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
    </analyzer>
</fieldType>
Run Code Online (Sandbox Code Playgroud)

我将这些脚本复制粘贴到schema.xml中,但它仍然不起作用.我该怎么办?谁能帮我?

solr case-insensitive

16
推荐指数
3
解决办法
5万
查看次数

如何使用.htaccess使Apache不区分大小写?

我最近从IIS切换到Apache,不幸的是我的一些链接有大写问题.我见过很多人在谈论如何将url重写为全部小写或全部大写,但我需要一些东西才能使Apache不区分大小写.这可以用.htaccess吗?

apache .htaccess case-insensitive capitalization

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

为什么Common Lisp不区分大小写?

是否有优势,定义一个函数一样(defun hi () "Hi!"),并能够通过调用它(hi)(HI)或者(Hi),或(setf a-number 5)并且能够使用访问数a-number,A-NUMBERA-Number

如果有这样的优势,那么为什么大多数其他语言区分大小写呢?

common-lisp case-sensitive case-insensitive

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

如何在Linux服务器中更改MySQL表名称不区分大小写?

我正在开发一个曾经托管在Apple服务器上的旧网站.当它迁移到新的Linux服务器时,它停止工作.我很确定这是因为php脚本中使用的所有MySQL查询都有不同的表名组合(我不知道为什么原始开发人员在创建表名或php脚本时没有遵循任何约定并且它没关系,因为默认情况下Mac和Windows MySQL服务器都不区分大小写.但是,Linux不是.

有没有办法改变MySQL上的Linux默认值,使它变得不区分大小写,它的工作方式与Mac或Windows类似?我一直在寻找,但没有找到任何不涉及更改脚本或表名或两者的答案.该网站必须使用某些CMS生成,因此有数十个页面,并且包含每个和多个表中包含多个查询的文件.我开始尝试以我能想到的最聪明的方式实现这种类型的解决方案,但如果我触摸表名,那么其他当前工作的页面就会停止工作(我试图避免进一步破坏网站).

Linux服务器中的Webmin中的MySQL服务器控制台中有一个系统变量(lower_case_table_names)我可以将其从0更改为1以解决此问题,但Webmin不会让我更改它,因为它是"只读" "变量.

你认为这将是一个很容易解决的问题,但到目前为止我失去了希望.我希望有人能得到一个答案,此刻可能会让我感到困惑.

mysql linux case-insensitive

15
推荐指数
4
解决办法
5万
查看次数

Java switch-case语句中不区分大小写的匹配

我想知道是否有一种方法可以在java switch case语句中执行不区分大小写的匹配.默认实现区分大小写.请参阅下面的示例.

public class SwitchCaseTest {

    /**
     * @param args
     */
     public static void main(String[] args) {

        switch ("UPPER") {
            case  "upper" :
                System.out.println("true");
                break;

            default:
                System.out.println("false");
                break;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

所以上面的语句false作为输出返回.而我正在努力让它像对待那样不区分大小写的匹配String.equalsIgnoreCase().我试图将字符串文字转换为小写,然后比较.但是无法这样做.

java string case-sensitive case-insensitive switch-statement

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

Pandas:请参阅列名,不区分大小写

使用Pandas DataFrame,假设我在csv文件中有一堆列,我希望能够通过不区分大小写的名称访问其中任何一个列.

import pandas as pd

df = pd.read_csv(path_to_csv, delimiter=",")

df2 = df["Size"]
Run Code Online (Sandbox Code Playgroud)

实际的列名是"Size".我能做什么才能df2 = df["sIZE"]被接受?

python case-insensitive pandas

14
推荐指数
3
解决办法
9252
查看次数

Ruby on Rails find_by 不区分大小写

我需要从 2 个参数中找到一条记录,但我需要其中一个不区分大小写。当前区分大小写的行是

  c = Course.find_by(subject_area: area, cat_number: cat)
Run Code Online (Sandbox Code Playgroud)

但我需要 subject_area 不区分大小写。我将如何实现这一目标?

sql activerecord ruby-on-rails case-insensitive

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