有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在java中只写行尾的字符串

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

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

现在,我如何要求程序只将4(第一行的末尾)写入另一个文件。但这里有一个技巧,不依赖于用户的输入

因此,在程序结束后,另一个文件将包含

4

我试着修剪这行(String=String1.trim())并使用函数endsWith(),但我需要在这些括号内放一个字符串

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


共 (5) 个答案

  1. # 1 楼答案

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

    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));
    }
    

    其中所使用的模式意味着:

    • (.)-()捕获。任何单个字符
    • \\s*-后跟0个或更多空白字符
    • $-后跟行的末尾
  2. # 2 楼答案

    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();
            }
        }
    }
    
  3. # 3 楼答案

    可以使用split()函数将分隔符上的行拆分为字符串数组。因此:

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

    现在,拆分数组包含单个项,您可以获得最后一个项,如下所示:

    String last = split[split.length - 1];
    
  4. # 4 楼答案

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

    使用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.