我搜索并找不到合适的代码,因为我只看到区分大小写的代码。
我正在编写代码,检查文件名是否以“CMF-”开头。 我有代码,如果名称不是以CMF开头 - 那么就添加它(这是有效的)。
但是,我遇到了区分大小写的问题。第一个if语句是我需要帮助的地方。
例如,当某人将名称保存为cmf-something时,我需要删除cmf-并将CMF-放在其位置。 作为另一个例子,有人将文件保存为Cmf-它还需要删除Cmf-并将CMF-放在其位置。
String name = document.getObjectName();
String newName;
String haystack = "CMF-";
if(haystack.regionMatches(true, 0, name, 0, 4) && !name.startsWith(haystack))
{
//part to delete lowercase cmf and then add cmf
}
//Check the object name for CMF-
if(!haystack.regionMatches(true, 0, name, 0, 4))
{
//System.out.println("Missing CMF- on name \nAdding CMF- to " + name);
StringBuffer str = new StringBuffer("CMF-");
newName = str.append(name).toString();
document.setObjectName(newName);
}
答案 0 :(得分:2)
如果我理解你的问题是正确的,只需将其设为小写并检查
即可if(newString.toLowerCase().starstWith("cmf")){
newString = newString.substring(3);
}
答案 1 :(得分:2)
你的方法似乎过于复杂。为什么不这样做:
String name = document.getObjectName();
//Check for names starting "CMF-", "cmf-", "Cmf-", etc.
if (name.substring(0,4).equalsIgnoreCase("CMF-")){
name = "CMF-"+name.substring(4); //May even overwrite correct name.
} else {
name = "CMF-" + name;
}
并且您还可以包含一些错误检查,这些错误检查名称太短并导致越界异常。
答案 2 :(得分:1)
我喜欢Lars Nielsen solution因为它很简单,但是如果您想看看正则表达式在这种情况下的外观,那么它就是:
"Cmf-abc".matches("(?i)^cmf-.*"); // true
Test。
正则表达式(?i)^cmf-.*
的工作原理如下:
(?i)
启用不区分大小写的匹配(默认情况下区分大小写)。^cmf-
表示我们希望在字符串的开头显示cmf-
(或Cmf-
,CMF-
,...)... .*
- ......随之而来。