Java 为从文件读取的数据提供错误计数
我尝试从文件中读取和写入一些数据,并使用split()方法从写入的数据中计算非常简单的特征,如空格数等。这是我试过的Java 为从文件读取的数据提供错误计数,java,filereader,filewriter,Java,Filereader,Filewriter,我尝试从文件中读取和写入一些数据,并使用split()方法从写入的数据中计算非常简单的特征,如空格数等。这是我试过的 File file=new File("G:\\AAA.txt"); FileWriter fw=new FileWriter(file); fw.write("AAAAAAAA"); fw.flush(); fw.close(); FileReader fr=new FileReader(file); Strin
File file=new File("G:\\AAA.txt");
FileWriter fw=new FileWriter(file);
fw.write("AAAAAAAA");
fw.flush();
fw.close();
FileReader fr=new FileReader(file);
String spaces="\\s";
BufferedReader br=new BufferedReader(fr);
String data=br.readLine();
System.out.println(data);
String[] tokenize=data.split(spaces);
System.out.println(tokenize.length);
我的问题是,如果没有空格,我得到的答案是1,尽管它必须是0。当给我1个空间时,它打印为2。在给定的空间中,答案总是大于1
谁能解释一下没有得到确切答案的原因。来自String.split的
如果表达式与输入的任何部分都不匹配,则结果数组只有一个元素,即该字符串
因此,如果没有空格,将返回原始字符串,因此长度为1
如果你有一个空格,比如说“AAAAAA”,数组将有两个元素“AAA”和“AAA”。因此,长度总是比令牌数大一个。如果没有空格,为什么是一个
Pattern pattern = Pattern.compile("\\s");
Matcher matcher = pattern.matcher("AA A");
int count = 0;
while (matcher.find())
count++;
如果在split(#regex)
中没有匹配的字符串,它将把输入字符串返回到字符串数组中
为什么总是有多个if空格
Pattern pattern = Pattern.compile("\\s");
Matcher matcher = pattern.matcher("AA A");
int count = 0;
while (matcher.find())
count++;
它将按空间分割字符串,所以上半部分和下半部分将在数组中。所以长度大于1
查找空间计数
Pattern pattern = Pattern.compile("\\s");
Matcher matcher = pattern.matcher("AA A");
int count = 0;
while (matcher.find())
count++;
你好,杰夫,谢谢你的回复。我明白你说的了。但是如果我的答案是“AAA”,中间有两个空格,怎么才能得到3呢?它计算空间的数量,对吗?那么,这是一种计算大型字符串特征的好方法吗?为了得到准确的答案,我是否总是需要从答案o.o.中减去1?
“AAA AAA”。拆分(\\s”)
将返回长度为3的数组。试试Apache的countMatches(java.lang.String),谢谢您回复Siva。计算字符串中的空格数是一种好方法吗?请你解释一下,带三个空格的“AA A”是如何给我4的答案的?要得到确切的空格数,我需要从我得到的答案中减去1吗?Pattern=Pattern.compile(\\s);Matcher Matcher=pattern.Matcher(“AA A”);整数计数=0;而(matcher.find())count++;你可以这样用