携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第30天,点击查看活动详情
今天,坐在那里,本来是没事做,在看代码,然后下午突然现在的组长让我再整理一下另一个模块的相关 sql 语句,我刚开始看一点,突然,以前的老大又问我怎么那个又用不了了?哇,突然全是事,很紧张以前遗留的问题,因为之前写的时候,感觉就并不是很完美,调试时也只是根据特定的案例调通了,就很怕真正应用上的时候,面临其他的不同情况,不适用......不过还好,今天出的问题不是很严重,主要是我调了其他人封装的底层代码,当时也没看懂,所以没有考虑周全,在改的过程中学到了一些东西,整理一下......
获取某字符在指定字符串中第n次出现的下标
public static int getIndexOf(String string, String str, int n) {
Pattern pattern = Pattern.compile(string);
Matcher findMatcher = pattern.matcher(str);
//标记遍历字符串的位置
int indexNum = 0;
while(findMatcher.find()) {
indexNum++;
if(indexNum == n) {
break;
}
}
return findMatcher.start();
}
上述方法就是我今天在改代码时需要的,方法旨在获取字符 str 在字符串 string 中第 n 次出现的下标。这样方便在对字符串做截取时,截取指定内容。
String 的 subString() 方法
既然提到了字符串的截取,就不得不提到 subString() 方法:
public String subString(int beginIndex)
subSting() 方法,传递一个参数时,是指该字符串从指定索引处(也就是传入的参数)开始,一直到字符串末尾,截取这么长。
public String subString(int beginIndex, int endIndex)
subString() 方法,传递两个参数时,是指该字符串从 beginIndex 开始,到 索引 (endIndex - 1) 处的字符,也就是说,开始索引 beginIndex,包括;结束索引 endIndex,不包括。截取的子字符串长度为:endIndex - beginIndex。
案例
public static void main(String[] args) {
String Str = new String("Hello Wrold!");
System.out.print("从索引位置4开始,截取到字符串末尾 :" );
System.out.println(Str.substring(4));
System.out.print("从索引位置4开始,截取到索引位置10 :" );
System.out.println(Str.substring(4, 10));
}
结果:
从索引位置4开始,截取到字符串末尾 : o Wrold!
从索引位置4开始,截取到索引位置10 : o Wrol
通过 StringUtils 截取字符串
既然写到这了,那就再说一下 StringUtils 是怎么截取字符串的吧:
StringUtils.substring("Hello World!", 4); // 结果为: o Wrold! 从索引位置4截取到字符串末尾
StringUtils.substring("Hello World!", 4, 10); // 结果为: o Wrol 从索引位置4截取到索引位置10
//截取某个字符串之前的字符
StringUtils.substringBefore("Hello World!", "l"); //结果为:He 以第一个“l”为准(不包括第一个“l”)。
StringUtils.substringBeforeLast("Hello World!", "l"); //结果为:Hello Wor 以最后一个“l”为准(不包括最后一个“l”)。
//截取某个字符串之后的字符
StringUtils.substringAfter("Hello World!", "l"); //结果为:lo World 以第一个”l”,为准(不包括第一个“l”)。。
StringUtils.substringAfterLast("Hello World!", "l"); //结果为:d! 这里以最后一个“l”为准(不包括最后一个“l”)。
//截取两个字符串之间隔的字符
StringUtils.substringBetween("Hello World!", "o"); //结果为: W 两个 o 之间的字符串。
StringUtils.substringBetween("Hello World!", "l", "r"); //结果为:lo Wo 第一个字符“l”与第一个字符“r”之间的字符串(不包括第一个字符“l”与第一个字符“r”本身)。
StringUtils.substringsBetween("Hello World!", "l", "r"); //结果为:数组 [lo Wo] 第一个字符“l”与第一个字符“r”之间的字符串(不包括第一个字符“l”与第一个字符“r”本身),以数组形式返回。
通过 split() 方法 + 正则表达式 截取字符串
再提一嘴另一种字符串截取的方法:
String str = "Hello, 你好, 9527";
String[] strs=str.split(",");
for(int i = 0, len = strs.length; i < len; i++) {
System.out.println(strs[i].toString());
}
结果:
Hello
你好
9527
字符串的截取相关内容,以前也知道,但如果长时间不用,冷不丁用一下,还得现搜,恰好今天遇到,就整理了一下,加深记忆,也方便自己以后再用到了到处找......
希望本文能够帮到你,如有错误,望指正!
我向你敬礼啊,Salute!