我有一个.txt
文件,里面有一些文字。
例如Hello, world
。
我想搜索整个文件,找出字符串有多少个外观以及它们的位置,例如" wo"在上面的文字有一个。该号码应放在edittext中。但是我只知道如何搜索特定的字符而不是全文,你能帮帮我吗?非常感谢
BufferedReader reader = new BufferedReader(new FileReader("somefile.txt"));
int ch;
char charToSearch='a';
int counter=0;
while((ch=reader.read()) != -1) {
if(charToSearch == (char)ch) {
counter++;
}
};
reader.close();
System.out.println(counter);
答案 0 :(得分:0)
您可以使用以下内容:
int nFound = 0;
String target = ".............Your long text..................";
String search = "find this"
int startIndex = 0
do
{
int index = target.indexOf(search, startIndex);
if(index !=-1)
{
// Found
nFound++;
// Here you have the index variable, which says you the position of the found match
/* DO your job */
/* Update the index to start the search again on the rest of the string, until no matches are found*/
startIndex = index+1;
}
else
break;
}while(true);
在此之前,将整个文本连接到" target"如果您确定目标字符串不会出现在某行的末尾并且下一行的开头
,则为每行代码字符串或dexecute答案 1 :(得分:0)
public static int countWord(String word, FileInputStream fis) {
BufferedReader in = new BufferedReader(new InputStreamReader(fis));
String readLine = "";
int count = 0;
try {
while ((readLine = in.readLine()) != null) {
String[] words = readLine.split(" ");
for (String s : words) {
if (s.contains(word))
count++;
}
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return count;
}
答案 2 :(得分:0)
如果您使用的是Java 7,那么根据this,您可以获得包含整个文件的String:
String text = new String(Files.readAllBytes(Paths.get("file")), StandardCharsets.UTF_8);
然后,你可以这样做:
public void print(String word)
{
String tempStr = null;
int count = 0;
while (tempStr.indexOf(word) != -1)
{
System.out.printf("Position: %d, Count: %d\r\n", tempStr.indexOf(word), ++count);
tempStr = tempStr.substring(tempStr.indexOf(word) + word.length());
}
}
答案 3 :(得分:0)
为简单起见,我会读一行并使用“string.split(String regex)”。
while(readLine) {
String[] str = readLine.split(regex);
//you can tell based on the array, how many matches and their position.
}
您还可以使用util.Scanner或regex.Pattern。
但如果你正在寻找表现,我认为'string.indexOf'是最好的方法。