我有一个需要在任何平台(Windows、Mac、Linux 等)上运行的 Perl 脚本。它的部分功能是重命名文件,但我不希望它覆盖现有文件。假设该脚本名为“my_rename”,它采用与“rename”函数相同的参数,并且用户执行以下命令:
my_rename test.txt test.TXT
Run Code Online (Sandbox Code Playgroud)
-e "test.txt"如果和-e "test.TXT"都返回 true,就会出现问题。以下是我想在以下条件下处理这种情况的方法:
情况 1:在区分大小写的文件系统上:
情况 2:在不区分大小写的文件系统上,当现有文件名的实际大小写为“test.TXT”时:
情况 3:在不区分大小写的文件系统上,当现有文件名的实际大小写不是“test.TXT”时:
由于该脚本必须是可移植的,因此它不能依赖于系统相关的函数或实用程序。
我的示例 SQL 是
select * from fruits where name in ('Orange','grape','APPLE','ManGO',etc....);//
Run Code Online (Sandbox Code Playgroud)
是否可以在 Postgres 的 IN 运算符中包含 ilike 或 ~* ?
我的解决方案是
select * from fruits where upper(name) in
(upper('Orange'),upper('grape'),upper('APPLE'),upper('ManGO'),etc....);
Run Code Online (Sandbox Code Playgroud)
我认为这不是正确的方法,请让我知道这种情况的最佳解决方案
我试图通过PHP从MySQL数据库返回XML列表,并且遇到区分大小写的问题.这是我正在使用的当前代码
$query = "SELECT * FROM FOO WHERE FOO LIKE '%$term%' ORDER BY FOO";
Run Code Online (Sandbox Code Playgroud)
在我的数据库中,我将名字列为"Joe",因此为了返回XML,我必须输入$ term作为"Joe".我不能用"乔"或"乔"但是想.我不确定我是否可以通过PHP直接完成此操作,或者我是否需要调整MySQL表.
我已经在Google和stackoverflow上寻找了答案,但不幸的是,所提供的解决方案要么假设有很多关于Spring MVC和Java的先前知识,要么是关于注释的不区分大小写.
因此,我不确定如何使这些解决方案适应我自己的问题,因此这个新问题的原因.
我想做的事听起来很简单.我有一个dispatcher-servlet.xml文件,其中包含以下XML块:
<bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="*.htm">pageController</prop>
<prop key="*.html">pageController</prop>
<prop key="/cms/*">pageController</prop>
<prop key="/admin/*">adminController</prop>
</props>
</property>
</bean>
Run Code Online (Sandbox Code Playgroud)
我希望/cms/*和/admin/*键不区分大小写,但对Java和Spring MVC都是新手,我不明白我应该怎么做.
例如,即使有人打字/CMS/或/Cms/我希望它使用pageController,但此刻它只会显示404页面.
是否有人能够向我解释为了达到我想要的结果我必须做些什么?
任何帮助将不胜感激!
编辑:
根据Rupok的回答,我添加了一个类来扩展AntPathMatcher.
不幸的是对此我不熟悉我不知道如何"将其设置回SimpleUrlHandlerMapping".
有人能够指出我正确的方向吗?
我无法使用MySQL和Drupal 7获得不区分大小写的查询.这是我的模块代码:
$results = db_select('people_table', 'p')->fields('p');
if (array_key_exists('department', $_GET)) {
$results->condition('Department', '%' . db_like($_GET['department']) . '%', 'LIKE');
}
return $results->orderBy('Name', 'ASC')->execute();
Run Code Online (Sandbox Code Playgroud)
随着?department=Chemistry在URL中,我得到三个结果.随着?department=chemistry在URL中,我没有得到任何结果.当我尝试时$results->condition('UPPER(Department)'...,我收到此错误:
PDOException:SQLSTATE [42S22]:未找到列:1054'where子句'中的未知列'UPPERDepartment':SELECT p.*FROM {people_table} p WHERE(UPPERDepartment LIKE:db_condition_placeholder_0 ESCAPE'\\')ORDER BY Name ASC;
所以看起来它吃掉了我的括号.我怎么能不区分大小写LIKE?
编辑:Department列和整个表上 的排序规则是utf8_bin. 这个答案说:"唯一特别的是utf8_bin,用于比较二进制格式的字符." 我不知道为什么选择这种排序规则,因为表中的所有数据都是英文文本.我可能只是将整理更改为utf8_general_ci.
我正在与整理斗争.我想构建一个对单词具有唯一索引的表,该表不区分大小写,但将"a"与"à"区分开来.这意味着"de"和"dé"应该是2个不同的条目,但de,De,DE,dE应该是相同的.
是否有一个utf8校对工作(似乎不是这样)?有没有办法说mysql不使用任何整理?还有其他解决方案吗?我不想把我的话改成小写或大写
谢谢
我尝试在elasticsearch.yml文件中创建一个条目来创建自定义分析器,就像在gist中提到的那样:https://gist.github.com/1403902
但我得到以下错误
{"error":"RemoteTransportException[[Banner, Robert Bruce][inet[/192.168.1.15:9300]][indices/create]]; nested: MapperParsingException[mapping [type1]]; nested: MapperParsingException[Analyzer [string_lowercase] not found for field [field1]];
我仍然无法弄清楚如何做到这一点.我搜索了stackoverflow相同的并得到了类似的回复(如上面提到的要点中提到的)
请给我一个例子,我可以测试一下.
我正在尝试为kendo网格启用不区分大小写的过滤(服务器端).有没有人知道一种方法将filower(toupper等)注入过滤器以启用不区分大小写的过滤?
背景:
我删除了一个kendo网格来使用来自控制器(EntitySetController.NET 4.5)的数据,所有这些似乎都运行得很好.内联编辑,服务器分页,添加新行等.
为了能够与淘汰赛不区分大小写的过滤,我只想构建具有过滤文本和现场包裹在tolower的过滤器(如建议在这里).我还没有找到使用kendo元素自定义过滤器的方法.
控制器:
public class CategoriesController : EntitySetController<Category, int>
{
public override IQueryable<Category> Get()
{
return _repository.Find().OrderBy(c => c.Name);
}
}
Run Code Online (Sandbox Code Playgroud)
数据源创建:
var serviceBaseUrl = "api/Categories",
dataSource = new kendo.data.DataSource({
type: "odata",
transport: {
read: {
url: serviceBaseUrl,
dataType: "json"
}
},
schema: {
// omitted for brevity
},
serverFiltering: true,
serverPaging: true,
pageSize: 10
});
Run Code Online (Sandbox Code Playgroud)
网格创建:
$("#grid").kendoGrid({
dataSource: dataSource,
pageable: true,
filterable: {
extra: false,
operators: {
string: {
contains: "Contains",
} …Run Code Online (Sandbox Code Playgroud) 今天我有一个不区分大小写的排序Set如下:
Set<String> set = new TreeSet<>(String.CASE_INSENSITIVE_ORDER);
set.add("foo");
set.add("FOO");
set.add("bar");
System.out.println(set.toString());
Run Code Online (Sandbox Code Playgroud)
这个输出是:
[bar, foo]
Run Code Online (Sandbox Code Playgroud)
但我真正想要的是:
[bar, FOO, foo]
Run Code Online (Sandbox Code Playgroud)
也就是说,我希望对集合的排序不区分大小写,但我希望能够在集合中使用具有不同情况的相同字符串(如"foo"和"FOO"),而不丢弃最后一个.
我知道我可以排序List,但在我的情况下,我需要一个Set.
在Java中有这样一种巧妙的方法吗?
我们考虑以下代码:
//...
public Map<String, Integer> getFruits() throws SomeException {
QueryResult[] queryResults = queryFruits();
Map<String, Integer> fruits = new TreeMap<>(String.CASE_INSENSITIVE_ORDER);
for (QueryResult qr : queryResults) {
fruits.put(qr.getField("Name").toString(), (Integer) rec.getField("ArticleNumber"));
}
return fruits;
}
//...
public static void main(String args[]) {
App app = new App();
Map<String, Integer> originalFruits = app.getFruits();
System.out.println(originalFruits.keySet());
}
Run Code Online (Sandbox Code Playgroud)
- 执行结果将是
[Apple, banana, cherry, Dragon_Fruit, Papaya ]
Run Code Online (Sandbox Code Playgroud)
在那之后,我正在打电话getApprovedFuits()并传递originalFruits给它,同时whiteListedFruitNames:
public Map<String, Integer> getApprovedFruits(Map<String, Integer> fruits, Set<String> whiteListedFruitNames) {
Map<String, Integer> approvedFruits = new …Run Code Online (Sandbox Code Playgroud) case-insensitive ×10
java ×3
mysql ×3
php ×2
sorting ×2
.net ×1
collation ×1
dictionary ×1
drupal ×1
drupal-7 ×1
file-rename ×1
filtering ×1
indexing ×1
kendo-grid ×1
odata ×1
perl ×1
postgresql ×1
set ×1
spring ×1
sql ×1
sql-in ×1
treemap ×1
unique-key ×1
url ×1
xml ×1