只写java中的行尾

时间:2013-12-06 13:16:29

标签: java string file

假设我有一个包含这些信息的文件

1, 2, 3, 4
5, 6, 7, 8

现在我怎么能要求程序只将4(这是第一行的结尾)写入另一个文件。但这是诀窍,不取决于用户的输入。

所以在程序结束后,另一个文件将包含

4

我尝试修剪Line(String = String1.trim())并使用函数endsWith()但我需要在这些括号中放入一个String。

我3周前开始使用java,所以请耐心等待,谢谢。

5 个答案:

答案 0 :(得分:1)

使用split()

String line = in.nextLine();             // read a line

String[] tokens = line.split("[\\s,]+"); // splits the line into an array

out.write(tokens[tokens.length - 1]);    // print the last index of the array.

答案 1 :(得分:0)

  • 逐行阅读文件
  • 对于每一行,用空格分割字符串(String.split()),然后访问split()返回的数组中的最后一个元素
  • 将元素写入新文件(请参阅BufferedWriterFileWriter)。

答案 2 :(得分:0)

您可以使用split()函数将分隔符上的一行拆分为String数组。所以:

String x = "1,2,3,4";
String[] split = x.split(",");

现在split数组包含各个项目,你可以得到最后一个:

String last = split[split.length - 1];

答案 3 :(得分:0)

package test;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;

public class ReadStringFromFileLineByLine {

    public static void main(String[] args) {
        try {
            File file = new File("test.txt");
            FileReader fileReader = new FileReader(file);
            BufferedReader bufferedReader = new BufferedReader(fileReader);
            StringBuffer stringBuffer = new StringBuffer();
            String line;
            while ((line = bufferedReader.readLine()) != null) {
                             if(line.Trim().endsWith( "4" )){
                stringBuffer.append(line);
                stringBuffer.append("\n");
                              }
            }
            fileReader.close();
            System.out.println("Contents of file:");
            System.out.println(stringBuffer.toString());
                   // write the buffer content to new file.
                   File file = new File("newfile.txt");
                   BufferedWriter writer = new BufferedWriter(new FileWriter(file));
                   writer.write(stringBuffer.toString());
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

答案 4 :(得分:0)

有两种方法可以做到这一点:

  1. 简单方法:使用myString.subString(myString.length()-1)
  2. 复杂/专业的方式(针对您的案例而言只是为了参考):使用这样的regex pattern
final String input = "1, 2, 3, 4";
final Pattern pattern = Pattern.compile("(.)\\s*$");
final Matcher matcher = pattern.matcher(input);
if (matcher.find()) {
  System.out.println(matcher.group(1));
}

使用的模式意味着:

  • (.) - ()捕获.any single char
  • \\s* - 后跟0个或更多空白字符
  • $ - 后面是行尾