在Python中比较字符串的最简单方法是什么,忽略大小写?
当然可以做(str1.lower()<= str2.lower())等,但是这创建了两个额外的临时字符串(具有明显的alloc/gc开销).
我想我正在寻找相当于C的stricmp().
[请求更多上下文,所以我将用一个简单的例子来证明:]
假设您要对looong字符串列表进行排序.你只需要做List.sort().这是O(n*log(n))字符串比较,没有内存管理(因为所有字符串和列表元素都是某种智能指针).你很快乐.
现在,您想要做同样的事情,但忽略这种情况(让我们简化并说所有字符串都是ascii,因此可以忽略区域设置问题).您可以执行List.sort(key = lambda s:s.lower()),但是每次比较会导致两个新的分配,加上垃圾收集器与重复(降低)字符串的负担.每个这样的存储器管理噪声比简单的字符串比较慢几个数量级.
现在,使用就地stricmp()函数,你可以:theList.sort(cmp = stricmp),它与theList.sort()一样快和内存友好.你又开心了.
问题是任何基于Python的不区分大小写的比较涉及隐式字符串重复,所以我期望找到基于C的比较(可能在模块字符串中).
找不到那样的东西,因此问题就在这里.(希望这澄清了这个问题).
我想将文件夹从" Frameworks" 重命名为" frameworks",但是git不会让我添加新的小写名称.我猜它会对文件名不区分大小写,是吗?
A git add frameworks/ -f没有帮助
map :: find方法是否支持不区分大小写的搜索?
我有一张地图如下
map<string, vector<string> > directory;
Run Code Online (Sandbox Code Playgroud)
并希望下面的搜索忽略大小写.
directory.find(search_string);
Run Code Online (Sandbox Code Playgroud) 我正在尝试执行sql查询:
select * from table where column like '%value%';
Run Code Online (Sandbox Code Playgroud)
但数据保存为"价值"(V为资本).
当我执行此查询时,我没有得到任何行.如何进行调用,无论字符的大小如何,它都会查找"值"?
PostgreSQL有一个简单的忽略大小写比较吗?
我想替换:
SELECT id, user_name
FROM users
WHERE lower(email) IN (lower('adamB@a.com'), lower('eveA@b.com'));
Run Code Online (Sandbox Code Playgroud)
有类似的东西:
SELECT id, user_name
FROM users
WHERE email IGNORE_CASE_IN ('adamB@a.com', 'eveA@b.com');
Run Code Online (Sandbox Code Playgroud)
在like与ilike单值(例如运营商的工作like 'adamB@a.com'),但不是套.
以下是我如何检查是否mystring以某个字符串开头:
>>> mystring.lower().startswith("he")
True
Run Code Online (Sandbox Code Playgroud)
问题是mystring很长(数千个字符),所以lower()操作需要很多时间.
问题:有更有效的方法吗?
我不成功的尝试:
>>> import re;
>>> mystring.startswith("he", re.I)
False
Run Code Online (Sandbox Code Playgroud) 我想要一个目录中的所有CSV文件,所以我使用
glob('my/dir/*.CSV')
Run Code Online (Sandbox Code Playgroud)
但是,这不会找到具有小写CSV扩展名的文件.
我可以用
glob('my/dir/*.{CSV,csv}', GLOB_BRACE);
Run Code Online (Sandbox Code Playgroud)
但有没有办法允许所有混合案例版本?或者这只是一个限制glob()?
我有以下问题.在我的应用程序中有一个列表视图.我从listview获取itemname并将其作为字符串传输到webview.如何忽略此字符串的大小写并将空格更改为下划线?
例如:String itemname = "First Topic".我将它转移到下一个活动,并希望忽略大小写并将空格更改为下划线(我想得到first_topic结果).我在webviewactivity中获得了"itemname",并希望按照以下代码执行我所描述的操作:
String filename = bundle.getString("itemname") + ".html";
Run Code Online (Sandbox Code Playgroud)
请帮忙.
在PHP中,变量和常量名称区分大小写,而函数名称则不区分大小写.
据我所知,PHP是发生这种情况的唯一语言.我使用的所有其他语言要么完全区分大小写,要么完全不区分大小写.
为什么PHP 部分区分敏感?
请注意,我不是问哪些名称区分大小写,而是为什么.
更新
我想我可以补充说,对于那些谁觉得我问的利益这,下面的列表:
区分大小写
不区分大小写
注意:
class关键字是不区分大小写我的目标是匹配属于Yahoo!的电子邮件地址.域名系列.在*nix系统中(我将使用Ubuntu),这些方法中任何一种匹配模式的好处和缺点是什么?
如果还有其他更优雅的解决方案,我无法想象,请分享.
他们来了:
grep选项-i:grep -Ei "@(yahoo|(y|rocket)mail|geocities)\.com"
grep:tr [:upper:] [:lower:] < /path/to/file.txt | grep -E "@(yahoo|(y|rocket)mail|geocities)\.com"
grep -E "@([yY]ahoo|([yY]|[rR]ocket)[mM]ail|[gG]eo[cC]ities)\.[cC][oO][mM]" /path/to/file.txt
case-insensitive ×10
string ×4
php ×2
python ×2
sql ×2
android ×1
c++ ×1
dictionary ×1
git ×1
glob ×1
grep ×1
java ×1
linux ×1
macos ×1
mysql ×1
performance ×1
postgresql ×1
regex ×1
replaceall ×1
sql-like ×1
startswith ×1
stl ×1
tr ×1