- 浏览: 431215 次
- 性别:
- 来自: 深圳
-
文章分类
最新评论
-
xiesbao:
找到了,太坑爹了。
Intellij Idea 滚动条跳动的问题 -
hvang1988:
按照你说的例子,主备说的是dbtest1,dbtest2,db ...
阿里开源Mysql分布式中间件:Cobar -
hvang1988:
问个问题:一个数据库的表的全部数据只分布在一个cobar上。多 ...
阿里开源Mysql分布式中间件:Cobar -
SiKing:
多谢,一直被这个问题困扰
Intellij Idea 滚动条跳动的问题 -
guodage003:
多谢 解决了这个蛋疼的问题。。
Intellij Idea 滚动条跳动的问题
引用
在做采集时,使用的是自己的API(过几天发布)做数据采集,没有使用他人写API(因为他们使用大部分是采用DOM结构和一些优化功能,在配置上有些不方便)。在字符串查找上,很重要一个是不区分大小写的查找,而java的api中没有直接提供这个方法,所以自己写,分别是模仿indexOf()和lastIndexOf(),大家踊跃指教,代码如下:
public class StringUtil { public static void main(String[] args) { String t="aaaaaaaaaa<table></table>aaa<table></table>"; String s="<TABLE"; // t=""; System.out.println("length="+t.length()); System.out.println(t.indexOf(s,0)); System.out.println(ignoreCaseIndexOf(t, s,0)); System.out.println(t.lastIndexOf(s)); System.out.println(ignoreCaseLastIndexOf(t, s)); } /** * 返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始,不区分大小。 * * @param subject 被查找字符串。 * @param search 要查找的子字符串。 * @return 指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始。 */ public static int ignoreCaseIndexOf(String subject, String search) { return ignoreCaseIndexOf(subject, search,-1); } /** * 返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始,不区分大小。 * * @param subject 被查找字符串。 * @param search 要查找的子字符串。 * @param fromIndex 开始查找的索引位置。其值没有限制,如果它为负,则与它为 0 的效果同样:将查找整个字符串。 * 如果它大于此字符串的长度,则与它等于此字符串长度的效果相同:返回 -1。 * @return 指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始。 */ public static int ignoreCaseIndexOf(String subject, String search, int fromIndex) { //当被查找字符串或查找子字符串为空时,抛出空指针异常。 if (subject == null || search == null) { throw new NullPointerException("输入的参数为空"); } fromIndex = fromIndex < 0 ? 0 : fromIndex; if (search.equals("")) { return fromIndex >= subject.length() ? subject.length() : fromIndex; } int index1 = fromIndex; int index2 = 0; char c1; char c2; loop1: while (true) { if (index1 < subject.length()) { c1 = subject.charAt(index1); c2 = search.charAt(index2); } else { break loop1; } while (true) { if (isEqual(c1, c2)) { if (index1 < subject.length() - 1 && index2 < search.length() - 1) { c1 = subject.charAt(++index1); c2 = search.charAt(++index2); } else if (index2 == search.length() - 1) { return fromIndex; } else { break loop1; } } else { index2 = 0; break; } } //重新查找子字符串的位置 index1 = ++fromIndex; } return -1; } /** * 返回指定子字符串在此字符串中最右边出现处的索引。 * * @param subject 被查找字符串。 * @param search 要查找的子字符。 * @return 在此对象表示的字符序列中最后一次出现该字符的索引;如果在该点之前未出现该字符,则返回 -1 */ public static int ignoreCaseLastIndexOf(String subject, String search){ if(subject==null){ throw new NullPointerException("输入的参数为空"); } else{ return ignoreCaseLastIndexOf(subject,search,subject.length()); } } /** * 返回指定字符在此字符串中最后一次出现处的索引,从指定的索引处开始进行反向查找。 * @param subject 被查找字符串 。 * @param search 要查找的子字符串。 * @param fromIndex 开始查找的索引。fromIndex 的值没有限制。如果它大于等于此字符串的长度,则与它小于此字符串长度减 1 的效果相同:将查找整个字符串。 * 如果它为负,则与它为 -1 的效果相同:返回 -1。 * @return 在此对象表示的字符序列(小于等于 fromIndex)中最后一次出现该字符的索引; * 如果在该点之前未出现该字符,则返回 -1 */ public static int ignoreCaseLastIndexOf(String subject, String search, int fromIndex) { //当被查找字符串或查找子字符串为空时,抛出空指针异常。 if (subject == null || search == null) { throw new NullPointerException("输入的参数为空"); } if (search.equals("")) { return fromIndex >= subject.length() ? subject.length() : fromIndex; } fromIndex = fromIndex >= subject.length() ? subject.length() - 1 : fromIndex; int index1 = fromIndex; int index2 = 0; char c1; char c2; loop1: while (true) { if (index1 >= 0) { c1 = subject.charAt(index1); c2 = search.charAt(index2); } else { break loop1; } while (true) { //判断两个字符是否相等 if (isEqual(c1, c2)) { if (index1 < subject.length() - 1 && index2 < search.length() - 1) { c1 = subject.charAt(++index1); c2 = search.charAt(++index2); } else if (index2 == search.length() - 1) { return fromIndex; } else { break loop1; } } else { //在比较时,发现查找子字符串中某个字符不匹配,则重新开始查找子字符串 index2 = 0; break; } } //重新查找子字符串的位置 index1 = --fromIndex; } return -1; } /** * 判断两个字符是否相等。 * @param c1 字符1 * @param c2 字符2 * @return 若是英文字母,不区分大小写,相等true,不等返回false; * 若不是则区分,相等返回true,不等返回false。 */ private static boolean isEqual(char c1,char c2){ // 字母小写 字母大写 if(((97<=c1 && c1<=122) || (65<=c1 && c1<=90)) && ((97<=c2 && c2<=122) || (65<=c2 && c2<=90)) && ((c1-c2==32) || (c2-c1==32))){ return true; } else if(c1==c2){ return true; } return false; } }
评论
4 楼
沙漠绿树
2011-01-10
zluyuer 写道
沙漠绿树 写道
zluyuer 写道
2个字符串都toLowerCase然后调用indexOf就可以了
你说的这种方法可以查找到。可能是我这篇文章没有写明是在什么情况使用。在做网页采集时,提取网页里面的信息,是不能把源码大小转换的,不然采集的信息就有错误。网页是怎么写,我们必须保持原样,在这种情况下,我们要做不区分大小写查找,我这种方法是可以实现的。
toLowerCase是生成新的字符串,你找到子串的位置就行了,原来的串不变嘛,原样采集
你的方法是可以。你这样就相当于相同的网页源码在内存中保存了两份,当你做大量采集时,内存资源是很宝贵的。虽然你转换后,字符的比较上要少一种情况,减少了时间,但是在换上也耗费了时间。
3 楼
zluyuer
2011-01-10
沙漠绿树 写道
zluyuer 写道
2个字符串都toLowerCase然后调用indexOf就可以了
你说的这种方法可以查找到。可能是我这篇文章没有写明是在什么情况使用。在做网页采集时,提取网页里面的信息,是不能把源码大小转换的,不然采集的信息就有错误。网页是怎么写,我们必须保持原样,在这种情况下,我们要做不区分大小写查找,我这种方法是可以实现的。toLowerCase是生成新的字符串,你找到子串的位置就行了,原来的串不变嘛,原样采集
2 楼
沙漠绿树
2010-10-14
zluyuer 写道
2个字符串都toLowerCase然后调用indexOf就可以了
你说的这种方法可以查找到。可能是我这篇文章没有写明是在什么情况使用。在做网页采集时,提取网页里面的信息,是不能把源码大小转换的,不然采集的信息就有错误。网页是怎么写,我们必须保持原样,在这种情况下,我们要做不区分大小写查找,我这种方法是可以实现的。
1 楼
zluyuer
2010-07-23
2个字符串都toLowerCase然后调用indexOf就可以了
发表评论
-
深入理解Java内存模型
2014-11-08 16:54 1040深入理解Java内存模型(一)——基础深入理 ... -
阿里开源Mysql分布式中间件:Cobar
2014-08-12 11:54 64507这几天研究 ... -
今日开源介绍:Google Guava、Google Guice、Joda-Time
2014-08-11 11:55 18269一、Guava 是一个 Google 的基于java1.6的 ... -
Jackson 动态过滤属性
2014-06-20 16:15 3056在把java对象转换为json时,有时需要依据需求动态过滤掉 ... -
自实现CAS原理JAVA版,模拟下单库存扣减
2014-04-02 17:47 7085在做电商系统时,库存 ... -
JAVA逻辑判断工具类
2013-09-06 21:33 1780在开发过程中,经常需要对“对象”、Map、Collecti ... -
Servlet2.4 监听器
2011-06-17 17:48 1626Servlet API提供了基本的应用程序事件监听器接口。编程 ... -
JSP页面编译成Servlet类文件过程中所涉及到的编码问题
2011-02-23 12:16 2938当请求一个JSP页面时,一般的都需要经历下面几个阶段: 1 ... -
Java中的字符集编码入门(六)Java中的增补字符
2011-02-23 12:11 1489Java号称对Unicode提 ... -
Java中的字符集编码入门(五)Java代码中的字符编码转换
2011-02-23 12:08 1177如果你是JVM的设计者,让你来决定JVM中所有字符的表 ... -
Java中的字符集编码入门(四)网页文件的编码
2011-02-23 12:03 1109接着上节的思路说,一个网页要想在浏览器中能够正确显示,需要在三 ... -
Java中的字符集编码入门(三)GB2312,GBK与中文网页
2011-02-23 12:02 1266GB2312是对中国的开发人员来说很重要的一个词汇,它的来龙去 ... -
Java中的字符集编码入门(二)编码字符集与字符集编码的区别
2011-02-23 12:01 949需要再一次强调的是, ... -
Java中的字符集编码入门(一)Unicode与UCS的历史恩怨
2011-02-23 11:59 1071ASCII及相关标准 ... -
方便管理工程中的SQL语句
2010-10-13 17:13 1876引用 之前在项目开发时候,经理要求把所有的SQL语句挑出 ... -
常见通信名称缩写解释
2010-09-03 16:05 2369引用 在看新闻时,购买手机时,经常听到关于通信方面的一 ... -
飞信维脉系统(定时短息发送系统)
2010-08-01 21:27 1615引用 因为工作原因 ... -
HTTP协议介绍
2010-07-28 09:45 839引用 HTTP(HyperTextTransferPro ... -
Java调用存储过程举例
2010-07-23 18:22 934Java调用oracle存储过程的示例总结如下。 ... -
Oracle数据库链接池
2010-04-13 17:28 2045引用 很多时候我们都要操作数据库,高效数据库操作的第一步 ...
相关推荐
图2 grep不区分大小写 备注: grep使用方法: grep [选项] PATTERN 文件 grep -i “error” #忽略大小写区分 grep -v “grep” #忽略grep命令本身,在文档中过滤掉包含有grep字符的行 grep进程时忽略自身 我们在通过...
在QT框架中,字符串处理是日常开发中必不可少的一部分。这篇博客主要介绍了QT中关于字符串的比较、查找、替换等操作,这些操作对于处理文本信息至关重要。以下是对这些操作的详细说明: 1. **字符串拼接**: 在QT...
编写一个程序统计文本文件英文字母个数,不区分大小写,屏幕输出每个字母出现的次数。 参考:文件操作函数,fopen, fclose, fread, fgetc;使用MSDN查找相关帮助; 要求:代码的编写、变量定义等应以《Coding ...
该函数对大小写不敏感。如需对大小写敏感的搜索,请使用 strstr()。 例子: 例子 1 复制代码 代码如下: <?php echo stristr(“Hello world!”,”WORLD”); ?> 输出: world! 例子 2 复制代码
由于我们要区分大小写,所以在这个过程中不会使用到转换字符大小写的操作。 下面是可能的实现步骤: 1. 定义函数入口和参数,包括两个字符串的地址和它们的长度。 2. 初始化计数器和指针,指向字符串2的起始位置。 ...
2. 忽略大小写:在某些情况下,可能需要忽略字符串的大小写。 3. 区分文件编码:不同的文件可能采用不同的字符编码(如ASCII、UTF-8、GBK等),确保工具能识别正确的编码以避免乱码问题。 五、效率优化: 1. 并行...
在VB中,标准的字符串函数如`StrComp`、`InStr`或`Like`默认是不区分大小写的。如果要在比较字符串时考虑大小写,我们需要采用一些特定的方法。以下是一些关键知识点: 1. **StrComp 函数**:这是VB中的字符串比较...
分两种情况处理:一种是区分大小写的查找,另一种是不区分大小写的查找。 - 区分大小写:遍历字符串,当找到目标字符时记录其位置。例如: ```cpp if (x == s[i]) { j = i; break; } ``` - 不区分大小写:...
- **位置查找**:函数支持在 ANSI 字符串或常规字符串中查找子字符串的位置,同时提供区分大小写和不区分大小写的选项。在 64 位环境下,使用这些优化后的函数进行字符串搜索时,性能提升尤为显著,可以达到原始 `...
除了基本的查找和替换,高级的字符串处理还包括不区分大小写的查找、全局替换(替换所有匹配项,而非仅第一个)以及使用正则表达式的复杂匹配。正则表达式是一种强大的模式匹配工具,能够处理复杂的查找和替换需求,...
- `equals()`:比较两个字符串的内容是否相同,不区分大小写。 - `equalsIgnoreCase()`:比较两个字符串的内容是否相同,忽略大小写。 - `compareTo()`:按照字典顺序比较字符串,返回值可以判断两个字符串的相对...
在这个例子中,`/S`表示搜索所有子目录,`/I`表示不区分大小写,`"example"`是你要查找的字符串,`*`代表所有文件。 压缩包中的`FindStr_chn`可能是一个中文版的`findstr`使用指南或教程,它可能会详细解释各种选项...
这个功能是通过调用Windows API中的`lstrcpyn`和`lstrcmp`函数来完成的,同时,我们要特别注意区分大小写。 首先,我们需要了解`lstrcpyn`和`lstrcmp`这两个API函数的作用。`lstrcpyn`函数用于复制字符串,并限制了...
忽略大小写可以使查找不区分大小写,全词匹配则可以确保只匹配完整的单词而不是子串。正则表达式是一种强大的模式匹配工具,能够处理复杂的查找和替换需求,例如匹配连续数字、邮箱地址等。 在实际使用过程中,用户...
/i 表示不区分大小写 可以参考help findstr的输出解释来使用此命令。 注意: findstr.exe一般在C:\Windows\System32目录下,要从任意路径调用该命令,需要将C:\Windows\System32添加到path环境变量中
14. strcasecmp:不区分大小写地比较两个字符串,返回值规则同strcmp。 15. strcat:连接两个字符串,将第二个字符串追加到第一个字符串的末尾。 16. strchr:查找字符串中第一个出现的指定字符,返回指向该字符的...
这些函数允许我们指定查找的条件,如是否区分大小写,是否全词匹配等。 替换字符串通常涉及到`str.replace()`方法,它会将字符串中的某个子串替换为另一个字符串。在Python中,`str.replace(old, new[, count])`...
2. **区分大小写/不区分大小写**:根据需求,用户可以选择是否区分查找字符串的大小写。 3. **全词匹配**:确保查找的字符串是完整单词,而不是部分匹配。 4. **反向查找**:从文件末尾开始查找,这在某些特定情况下...