我大概只能写到这里,要求是英语文本文档,判断特殊字符,并按特殊字符的个数递增排列句子
特殊字符是指非字、非数字和非空格字符。
以".""?""!"这些结尾的是一句话
然后特殊字符个数相同的按原来的文本顺序排列
特殊字符指你封装的方法?
import java.io.*;
public class FileTest {
public static void main(String[] args) {
//读取文件内容
String path = "E:\\txt.txt";
File file = new File(path);
if (!file.exists()){
System.out.println("文件不存在!");
return;
}
InputStreamReader read = null;
BufferedReader bufferedReader=null;
StringBuffer sb=null;
try {
read = new InputStreamReader(new FileInputStream(file));
bufferedReader = new BufferedReader(read);
String lineText = null;
sb=new StringBuffer();
while((lineText = bufferedReader.readLine())!=null){
sb.append(lineText);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
//分割每句话
String[] strs = sb.toString().split("\\.|\\!|\\?");
sortTxt(strs);
System.out.println("排序后的结果:");
for (String s:strs){
System.out.println(s);
}
}
public static void sortTxt(String [] arr){
for(int i=1;i<arr.length;i++)
{
for(int j=0;j<arr.length-i;j++)
{
if(getSpecialNum(arr[j])>getSpecialNum(arr[j+1]))
{
String temp=arr[j+1];
arr[j+1]=arr[j];
arr[j]=temp;
}
}
}
}
public static int getSpecialNum(String str){
int num=0;
char[] chars = str.toCharArray();
for(char c : chars){
if ((c>='0' && c<='9') || (c>='a' && c<='z') || (c>='A' && c<='Z') || c==' '){
}else{
num++;
}
}
return num;
}
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!