我觉得split和SCANNER 的区别总不是很明显。
解决方案 »
- 请问,Java如何使用多线程重绘?有哪几种方法,哪种比较好?
- myclipse7.0调式怎么进入类加载器了
- 怎么把.txt文件内容导入jtable
- 请问控制台输入时怎样将回显字符设为星号
- 请问在java中怎么创建pl/sql触发器啊,用Statement对象的execute语句不能换行啊
- 在JTextArea不能用智能ABC输入法的问题?
- 一个小问题(关于xml文件的生成)
- java application有前途吗?
- 100分相送!! 为什么我的jb提示说找不到 java.io.* ?
- Exception in thread "main" java.lang.NoClassDefFoundError:Ellsworth(这是我的文件)。上面是我编译通过之后,执行是出现的信息?哪里
- 几段问题代码,请求仙人指点
- java编译后的exe文件,还是字节码吗?还需要虚拟机来执行吗?
Scanner sc=new Scanner(System.in);
String s=sc.next();split是用来拆分有明显分隔符的字符串的方法,比如:
String s = "abc,def,gh";
String[] ss = s.split(":");
得到的是一个拆分后的数组
Scanner scanner = new Scanner(new File(file));
try {
while ( scanner.hasNextLine() ){
String[] tokens = scanner.nextLine().split("。");
//再做处理
}
}
finally {
scanner.close();
}
Scanner 精细Parse text
Scannerpublic Scanner(String source) Constructs a new Scanner that produces values scanned from the specified string. Parameters:
source - A string to scan
里面有一个处理String例子:
String input = "1 fish 2 fish red fish blue fish";
Scanner s = new Scanner(input);
s.findInLine("(\\d+) fish (\\d+) fish (\\w+) fish (\\w+)");
MatchResult result = s.match();
for (int i=1; i<=result.groupCount(); i++)
System.out.println(result.group(i));
s.close();
split是String类里方法,有两个,具体请参考Java API。
Scanner和Split的确都可以处理字符串,但本质就不一样啊,一个类一个方法,不言而喻。
我觉得外国人的思路就是,Scanner就是将源做个包装,不管你是屏幕输入还是文件,还是别的啥玩意,当然也包括String,统统给你包装成Scanner这么个类型,然后提供一大堆方法让你慢慢处理字符串,相当明了。而split就是非常简单的字符分割,非常单纯的字符串处理的一个方法。
说两者没关系是假的,但完全没必要区分它们在字符串处理上的关系,这就是误入歧途。
简单来说,怎么用着顺手怎么用,完全不会出现不知道用哪个的情况。
借用楼上的例子,如果要分析文件中的字符串,当然用Scanner,就不用你再用FileRead读入之类的前期处理了,直接Scanner(File)解决,简单明了。
如果是要分割字符串,想都不要想,直接split,用Scanner(String)包装一下看着都累。
以上纯属个人观点。