通过读取txt文件来反转String

时间:2014-10-13 08:42:23

标签: java

我正在尝试反转字符串。我正在从字段中读取字符串,名为abc.txt

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.StringTokenizer;

public class MrText {

    private static final String NEW_LINE_SEPARATOR = System
            .getProperty("line.separator");

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

        FileReader input = new FileReader("abc.txt");
        BufferedReader bufRead = new BufferedReader(input);

        StringBuffer rvsWords = new StringBuffer();
        String line;

        line = bufRead.readLine();

        while (line != null) {

            StringTokenizer tok = new StringTokenizer(line);

            String lineReversed = "";
            while (tok.hasMoreElements()) {

                String word = (String) tok.nextElement();

                for (int i = word.length() - 1; i >= 0; i--) {
                    rvsWords.append(word.charAt(i));

                }

            }

            line = bufRead.readLine();

            if (line != null) {
                rvsWords.append(NEW_LINE_SEPARATOR);
            }
        }
        bufRead.close();

        // File outFile = new File("gggggggggggggggggggg.txt");
        FileWriter writer = new FileWriter(outFile);
        writer.write(rvsWords.toString());
        writer.close();

        // System.out.println(rvsWords.toString());

        // rvsWords.setLength(0);
    }
}

输入的文本文件: abc.text包含

IT comp mech civil

按上述代码输出: TI pomc livic hcem

我输出了输出: comp IT 民用机械

5 个答案:

答案 0 :(得分:2)

您无需更改字母组成单词的顺序: nextElement返回下一个单词。 然后将此循环应用于此单词:

for (int i= word.length()-1; i >=0 ; i--) 
{  
                rvsWords.append(word.charAt(i));

}  

此循环导致字母的顺序相反。 因此不要使用它。

然后将一个元素保留在临时变量中,以便用下一个元素切换它。

容易羞怯

答案 1 :(得分:1)

for (int charIndex= myString.length()-1; charIndex >=0 ; charIndex--) 
{  
                reversedString.append(originalString.charAt(charIndex));

}

答案 2 :(得分:1)

您也可以使用apache commons库中的StringUtils。

它有很多用途,其中之一是StringUtils.reverse("yourStringHere");

答案 3 :(得分:0)

使用StringBuffer类可以轻松地反转字符串。

StringBuffer revString = new StringBuffer(word.toString());
System.out.println(revString.reverse().toString());

答案 4 :(得分:0)

你不需要你的for循环(它正在颠倒你的话)

直接取词并在输出中巧妙地设置它们:

    StringBuffer rvsWords = new StringBuffer();
    String line;

    line = bufRead.readLine();

    int index = 0;

    while (line != null) {
        StringTokenizer tok = new StringTokenizer(line);

        while (tok.hasMoreElements()) {

            String word = (String) tok.nextElement();

            rvsWords.insert(index, " ");
            rvsWords.insert(index, word);

        }

        line = bufRead.readLine();

        if (line != null) {
            rvsWords.append(NEW_LINE_SEPARATOR);
        }

        index = rvsWords.length() - 1;
    }