为何String类中的split方法字符.无法识别
最近在进行字符串切割时发现 "." 无法直接切割。
import java.util.Scanner;
public class Test {
public static void main(String[]args) {
Scanner sc = new Scanner(System.in);
String s= "System.out.println(s);";
String str1[]= s.split(".");
for(String s1 :str1) {
System.out.println(s1);
}
System.out.println(str1[0]); //第11行
}
}
它报错了.啥子都没输出。
脑瓜子刚开始是嗡嗡的,这不就是正常的字符串切割吗。
随后我看了一下该方法对应的API
原来传入的split传入的参数是正则表达式,突然想到之前学的“.”平常的点符号是需要"[.]"或者"\56"表示的。
然后只需要把split(".")改成split("[.]")就可以了。
import java.util.Scanner;
public class Test {
public static void main(String[]args) {
Scanner sc = new Scanner(System.in);
String s= "System.out.println(s);";
String str1[]= s.split("[.]");
for(String s1 :str1) {
System.out.println(s1);
}
System.out.println(str1[0]);
}
}
运行结果也正常啦
另外对于正则表达式中直接的"."表示的是任意一个字符。
import java.util.Scanner;
public class Test {
public static void main(String[]args) {
Scanner sc = new Scanner(System.in);
String s= "System.out.println(s);";
String str1[]= s.split("m.");
for(String s1 :str1) {
System.out.println(s1);
}
System.out.println(str1[0]);
}
}
文章版权声明:除非注明,否则均为彭超的博客原创文章,转载或复制请以超链接形式并注明出处。
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。