我需要写个程序把英文的文章先按 . 分割成句子(String 数组) 然后再按 空格 把句子分割成单词
用split("//.")发现确实按照.进行了分割,但是每个句子中的所有空格也都没有了。这个应该怎么解决呢?另外,split的分割关键词好像是依赖正则表达式来实现的,那么我如果希望有多个分割条件应该怎么写这个表达式呢?

解决方案 »

  1.   

    who are you?I don't know 属于两句还是一句?
      

  2.   

    但还是会误操作,比如比如HelloWorld.java
      

  3.   

    但还是会误操作,比如比如HelloWorld.GIF会被替换为HelloWorld.gIF
      

  4.   


    很抱歉,不能及时回帖,因为
    一个用户只允许连续回复3次。可以采用下面的简单做法,就能转化句子的首字母了
    前提要确保你的文件是“规范的”,否则会冒出不伦不类的东东
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileReader;
    import java.io.IOException;
    import java.io.PrintWriter;import javax.swing.JFileChooser;
    import javax.swing.JOptionPane;public class ReplaceFirstCharacterOfSentence {    public static void main(String[] args) {
    //String srcString = "Nowadays, with the rapid development of information technology, online shopping has gained great popularity among more and more web users. For example, it is fashionable for youngsters to purchase daily essentials, such as books, clothes, electrical equipment, on some famous website, like Taobao, EBay and Alibaba.";
    String srcString = fileToString();//选择要转化的文件
    String destString = getDestString(srcString);//转化过程
    stringToFile(destString);//选择转化成功后文件的保存位置
    //System.out.println(destString);
        }
    //////////////////////////////////////////////////////////////////////////////////////////////////////
        public static String getDestString(String srcString) {// 将文本文件中句子中的首字母大写改为小写,假如每句英文是“相当正常的”
    if (srcString == null)
        return null;
    StringBuffer destString = new StringBuffer();
    ;
    int i = 0;
    int length = srcString.length();
     Character c = null;
    while (i < length) {//逐个字符进行遍历
      //----------------------处理首字母前的空白符----------------------------------------------
        while(i<length&&Character.isWhitespace(c=srcString.charAt(i))) {    
    destString.append(c);
        i++;
        }
        //----------------------处理首字母-------------------   --------------------------------
        if(i<length&&Character.isUpperCase((c=srcString.charAt(i)))){
    destString.append((char)(c+32));
    i++;
        }else if(i<length){
    destString.append(c);
    i++;
        }
        //----------------------处理首字母到标点符号之间的字符-----------------------------------     
        while (i<length&&!(c=srcString.charAt(i)).equals('.')&&!c.equals('?')&&!c.equals('!')) {
    destString.append(c);
    i++;
        }
        //----------------------处理标点符号---------------------------------------------------
        if(i<length){   
    destString.append(c);
         i++;
        }
    }
    return destString.toString();
        }    // //////////////////////////////////////////////////////////////////////////////////////////////////////    public static void stringToFile(String sourceString) {
    PrintWriter pw = null;
    try {
        JFileChooser jFileChooser = new JFileChooser();
        javax.swing.filechooser.FileFilter fileFilter = new javax.swing.filechooser.FileFilter() {
    public boolean accept(File file) {
        if (file.isDirectory())
    return true;
        String fileName = file.getName();
        if (fileName.toUpperCase().endsWith("TXT"))
    return true;
        return false;
    } public String getDescription() {
        return "保存为文本文件";
    }
        };// 建立一个过滤文件类型的过滤器(对话框中正确显示文件),是否启用过滤器决定于下面两句话
        // jFileChooser.addChoosableFileFilter(fileFilter);
        // jFileChooser.setFileFilter(fileFilter);
        int returnValue = jFileChooser.showSaveDialog(null);
        File fileOfSave = null;// 保存文件句柄
        if (returnValue == javax.swing.JFileChooser.APPROVE_OPTION) {
    fileOfSave = jFileChooser.getSelectedFile();// 获得文件句柄,文件是否存在还未知
        }
        String fileNameOfSave = fileOfSave.getName();// 返回输入的文件名
        // 检查文件名是否符合要求,这一步暂时省略......................................
        if (fileOfSave.exists() && !isAgree("该文件已经存在,确定要覆盖吗?"))
    return;
        else
    fileOfSave.createNewFile();
        pw = new PrintWriter(fileOfSave);
        pw.print(sourceString);
        pw.flush();
    } catch (IOException e) {
        throw new RuntimeException(e);
    } finally {
        if (pw != null)
    pw.close();
    }
        }    // //////////////////////////////////////////////////////////////////////////////////////////////////////
        public static String fileToString() {
    StringBuilder sb = new StringBuilder();
    JFileChooser jFileChooser = new JFileChooser();
    javax.swing.filechooser.FileFilter fileFilter = new javax.swing.filechooser.FileFilter() {
        public boolean accept(File file) {
    if (file.isDirectory())
        return true;
    String fileName = file.getName();
    if (fileName.toUpperCase().endsWith("TXT"))
        return true;
    return false;
        }     public String getDescription() {
    return "读取文本文件";
        }
    };
    // 建立一个过滤文件类型的过滤器(对话框中正确显示文件),是否启用过滤器决定于下面两句话
    // jFileChooser.addChoosableFileFilter(fileFilter);
    // jFileChooser.setFileFilter(fileFilter);
    int returnValue = jFileChooser.showOpenDialog(null);
    if (returnValue == JFileChooser.APPROVE_OPTION) {
        File file = jFileChooser.getSelectedFile();
        if (!file.exists()) {
    prompt("文件不存在");
    return null;
        }
        // 检查文件名是否符合要求,这一步暂时省略......................................
        BufferedReader br = null;
        try {
    br = new BufferedReader(new FileReader(file)); String string;
    while ((string = br.readLine()) != null) {
        sb.append(string);
        sb.append("\r\n");
    }
        } catch (IOException e) {
    throw new RuntimeException(e);
        } finally {
    if (br != null)
        try {
    br.close();
        } catch (IOException e) {
    throw new RuntimeException(e);
        }
        }
    }
    return sb.toString();
        }    public static boolean isAgree(String hint) {
    int returnValue = javax.swing.JOptionPane.showConfirmDialog(null, hint);
    if (returnValue == javax.swing.JOptionPane.YES_OPTION)
        return true;
    else
        return false;
        }    public static int prompt(String promptMessage) {
    return JOptionPane.showConfirmDialog(null, promptMessage, "友情提示",
    JOptionPane.WARNING_MESSAGE);
        }
        // ///////////////////////////////////////////////////////////////////////////////////////////////////////
    }
      

  5.   

    什么叫特殊的词?分割句子使用 java.text.BreakIterator.getSentenceInstance(Locale.ENGLISH)
      

  6.   

    /*
     * 
     * 分割英语短文
     * 
     */
    public class SplitEnglish {


     public static void main(String[] args){
     
     
     String str = "I love you.but you love her.wu wu wu";  //要分割的短文
     
     String[] splitSentence = str.split("\\.");          //分割短文成句子数组
     
     List<String> list = new ArrayList<String>();       //定义一个用于存储单词集合
     
     int i = 0;                                        //计数器
      
     while(splitSentence.length > i){                  //循环分割后的句子数组
     
     String[] splitWorld = splitSentence[i].split(" ");  //分割句子成单词数组
     
     for(int j=0; j<splitWorld.length; j++){           //遍历得到单词数组中的每一个单词
     list.add(splitWorld[j]);                      //添加到单词集合中去
     }
      
     i++;                           //计数器递增                  
     }
     
     /*
      * 打印单词集合中所有的单词
      */
     for(int j=0; j <list.size(); j++){
     System.out.print(list.get(j) + " ");
     }
     }
    }