【问题标题】:How to copy a string that starts and ends with specific characters in a text file using Java如何使用Java复制文本文件中以特定字符开头和结尾的字符串
【发布时间】:2014-08-23 05:04:44
【问题描述】:

我已使用 Java 将网页的页面源代码复制到文本文件中。

文件中有以下字符串,我只需要复制数字并将它们保存在另一个文件中。

'数字', '[670341345,670341248,670320495,670318700,670317434,670315031,670314751,670314299,670311573]');

只是以“'numbers','[”开头并以“]'结尾的字符串);”

这是我所做的:

import java.io.*;
import java.net.*;


public class copyID {
    public static void main (String[] args) throws Exception {

    String url = "http://www.google.com";
    StringBuilder fullPage = new StringBuilder();
    URL olx = new URL (url);

    URLConnection conn = olx.openConnection();

    BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));

    String inputLine;
    while((inputLine = in.readLine()) != null){

        fullPage.append(inputLine+"\n");
}
    in.close();
    saveToFile(fullPage.toString());    }                                                           

    public static void saveToFile(String input){
        try{
            BufferedWriter out = new BufferedWriter (new FileWriter("ID_List.txt"));

            out.write(input);
            out.close();

        }
        catch (IOException e){}

    }



    }

我该怎么做?我正在使用 Eclipse。

【问题讨论】:

  • 你为什么给我们看那个代码?它似乎不相关(除了这是您获取数据的方式)。为了解决这个特定问题,您尝试了哪些方法?
  • 我找不到任何方法。 @邓肯

标签: java string file search find


【解决方案1】:

您的搜索字符串非常具体,所以我认为即使是最顽固的反正则表达式 HTML 人员也可以在这里使用正则表达式。

下面的代码显示了如何隔离有问题的文本并提取数字。我假设您可以研究如何解决其余问题:

String example = "sdflkjsdflskdfs0980sdflkjmlsdf'numbers', '[1231231"
    + "23,123123123,1231232,345634,3453534,123123]');asdasdasdasd";

Pattern pattern = Pattern.compile("'numbers', '\\[(.*?)\\]'\\);");
Matcher matcher = pattern.matcher(example);

while (matcher.find()) {
  String[] numbers = matcher.group(1).split(",");
  for (String s : numbers) {
    System.out.println(s);
  }

输出:

123123123 123123123 1231232 345634 3453534 123123

【讨论】:

  • 嗨@Duncan,我已经尝试将您的代码应用到我的程序中,但是由于我无法理解 Pattern.compile 方法中的字符,所以我无法走得更远。你能解释一下那行代码吗?
【解决方案2】:

您可以使用String 方法来做到这一点。

请注意,这只会获取“[..]”第一次出现的内容。

String str = "sdflkjsdflskdfs0980sdflkjmlsdf'numbers', '[1231231"
            + "23,123123123,1231232,345634,3453534,123123]');asdasdasdasd";

String subStr = str.substring(str.indexOf("[")+1, str.indexOf("]"));

String[] numbers = subStr.split(",");

for(String num: numbers)
   System.out.println(num);

输出:

123123123
123123123
1231232
345634
3453534
123123

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-17
    • 2013-08-18
    相关资源
    最近更新 更多