作者:mobiledu2502900677 | 来源:互联网 | 2022-12-06 18:09
你有什么想法我怎么能在字符串的第二个点之后得到第一个字符.
String str1 = "test.1231.asdasd.cccc.2.a.2";
String str2 = "aaa.1.22224.sadsada";
在第一种情况下,我应该得到a
第二种情况2
.我想到用点划分字符串,并提取第三个元素的第一个字符.但它似乎很复杂,我认为有更好的方法.
1> Eugene..:
这个正则表达式怎么样?
Pattern p = Pattern.compile(".+?\\..+?\\.(\\w)");
Matcher m = p.matcher(str1);
if (m.find()) {
System.out.println(m.group(1));
}
正则表达式说:以非贪婪的方式(.+?
)一次或多次查找任何东西,必须后跟一个点(\\.
),而不是以非贪婪的方式(.+?
)后跟一个点(\\.
)一次或多次.在匹配之后,取第一组中的第一个单词字符((\\w)
).
OP没有强制要求所谓的字符成为单词字符,所以你应该只使用`.`而不是`\ w`.你可以避免重复自己:`模式p = Pattern.compile("(?:.+?\\.){2}(.)");`.如果你想在不经过`String`的情况下提取`char`,你也可以使用`Matcher m = p.matcher(str1); if(m.find()){char c = str1.charAt(m.start(1)); }`.或者,如果你想要一个字符串,你可以临时做:`String s = str1.replaceFirst("(?:.+?\\.){2}(.).*","$ 1"); `.