繁体   English   中英

将stringbuffer转换为字符串并将单词按字母顺序排列

[英]converting stringbuffer to string and putting words in alphabetized order

我试图从文件中读取字符串并将其存储在StringBuffer中,然后以某种方式将其转换为字符串并将该字符串拆分为单词,并按字母顺序显示。 我可以不用stringbuffer来做,但是我必须这样做。 这是我到目前为止所拥有的:

    public class TextProcessor {
         public static void main(String[] args) throws IOException {
            String input_filename = "input_filename.txt";

             File file1 = new File(input_filename);


             Scanner input = new Scanner(file1);
             StringBuffer buffer = new StringBuffer("");

             while (input.hasNext()){        
                 String s = input.next();           
                 buffer.append(s);
                             //this is where I need to convert the stringbuffer to
                             // a string and split the words to put them in alphabetized  order
                            // this is what I did 
                 String arr= s.toString().toLowerCase();
                 String [] words = arr.split(" ");// Nothing seems to work.

buffer.toString()应该做到这一点。

但是请注意, StringBuffer不会为您添加空格。 因此,当您split(" ") ,它将无法工作。

固定:

buffer.append(s).append(" ");

然后:

String myString = buffer.toString();
String[] arr = myString.split(" ");

但是,当然,可以采取MadProgrammer的建议并将字符串放在List而不是StringBuffer ,从而避免这种额外的逻辑。 要按字母顺序排序,请调用Collections.sort(listOfStrings)


是的,更多信息!

StringBuffer是线程安全的,但效率不如StringBuilder 考虑到您目前的知识,我建议您使用StringBuilder

弹出两件事...

首先,您似乎在尝试从中读取内容的循环内创建一个数组。 我假设您想先阅读整个文件...

其次,您没有在StringBuilder添加定界符,这意味着您的拆分将失败,因为它(可能)没有任何拆分内容。

while (input.hasNext()){        
    String s = input.next();           
    if (buffer.length() > 0) {
        buffer.append(" ");
    }
    buffer.append(s);
}
String arr= s.toString().toLowerCase();
String [] words = arr.split(" ");// Nothing seems to work.

对于排序,您应该看一下Arrays.sort

就个人而言,我会使用某种类型的List ,但是您似乎“必须”使用StringBuilder

下面是完整的一个。

import java.io.File;
import java.io.IOException;
import java.util.Arrays;
import java.util.Scanner;

 public class TextProcessor {

         public static void main(String[] args) throws IOException 
         {

             String input_filename = "/home/alp/workspace/text.txt";
             String temp_string = null;
             String[] words;
             File file = new File(input_filename);
             Scanner input = new Scanner(file);
             StringBuffer buffer = new StringBuffer();

             while (input.hasNext())
             {        
                 String s = input.next();   
                 buffer.append(s).append(" ");
             }
             temp_string= buffer.toString();
             words=temp_string.split(" ");
             Arrays.sort(words);
             for(int i=0; i<words.length; i++) System.out.println(words[i]);
         }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM