java正则表达式匹配斜杠,正则表达式匹配数字和横线
爪哇中正则表达式如何匹配竖线() , 以及在科特林中是如何改进的?_禅与计算机程序设计艺术的技术博客_博客
爪哇中正则表达式如何匹配竖线()
在爪哇中直接调用线的使分离方法:
val b=java.lang.String(a)
val s3=b.split() //[a , b , c , , 1 , 2 , 3 , 4]
println(JSON.toJSONString(s3))因为在正则表达式中是或的概念,要想匹配就得用转移字符 但是 又是爪哇岛的转移字符,要让其在正则中起作用,就得使用: \
val b=java.lang.String(a)
val s3=b.split( )
println(JSON。tojsonstring(S3))//[ a , b , c , , 1 , 2 , 3 , 4]
val s4=b.split(\\ )
println(JSON。tojsonstring(S4))//[ ABC , 1234]这个爪哇中的使分离方法设计简直就是一个天坑(天然的坑): 如果不看实现代码,很容易犯错。
public String[]split(String regex){
返回split(regex,0);
}
public String[]split(String regex,int limit) {
/*快速路径如果正则表达式是
(1)单字符字符串,并且该字符不是
正则表达式的元字符。$()[{^?* \ ,或者
(2)双字符字符串,第一个字符是反斜杠和
第二个不是美国信息交换标准码数字或美国信息交换标准码字母。
*/
char ch=0;
if (((regex.value.length==1。$()[{^?* \.的索引(ch=regex。charat(0))==-1)
(regex.length()==2
regex.charAt(0)==\\
((((ch=regex。charat(1))- 0 )( 9 -ch))0
((ch-a)(z-ch)) 0
((ch-A)(Z-ch)) 0))
(ch字符MIN_HIGH_SURROGATE
荣誉勋爵字符MAX_LOW_SURROGATE))
{
int off=0;
int next=0;
布尔限制=限制
ArrayList String list=new ArrayList();
while ((next=indexOf(ch,off))!=-1) {
如果(!limited list.size() limit - 1) {
list.add(substring(off,next));
关闭=下一个1;
} else { //最后一个
//断言(列表。size()==limit-1);
list.add(子字符串(off,value。长度));
off=值.长度
打破;
}
}
//如果没有找到匹配,则返回
if (off==0)
返回新字符串[]{ this };
//添加剩余段
如果(!限制 list.size()限制)
list.add(子字符串(off,value。长度));
//构造结果
int resultSize=list。size();
if (limit==0) {
while(resultSize 0列表。获取(结果大小-1).length()==0) {
resultSize-;
}
}
字符串[]结果=新字符串[resultSize];
返回list.subList(0,resultSize).toArray(结果);
}
返回模式.编译(正则表达式).分裂(这个,极限);
}在科特林中,直接优化了这个使分离方法:
val a=abc1234
val s1=a.split( )
val s2=a.split(\\ )
println(s1) //[abc,1234]
println(s2) //[abc1234]Kotlin开发者社区国内第一科特林开发者社区公众号,主要分享、交流科特林编程语言、春天的Boot、Android、React.js/Node.js、函数式编程、编程思想等相关主题。
科特林开发者社区
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。