首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何设置java字符串变量等于"htp://website htp://website“

如何设置java字符串变量等于"htp://website htp://website“
EN

Stack Overflow用户
提问于 2012-12-13 08:17:57
回答 4查看 566关注 0票数 0

所以我有一个很大的网站列表,我想把它们都放在一个字符串变量中。我知道我不能单独转到所有的链接并转义//,但是有超过几百个链接。有没有办法进行“块转义”,这样“块”之间的所有东西都会转义?这是我想要保存在变量中的一个示例。

代码语言:javascript
复制
String links="http://website http://website http://website http://website http://website http://website"

另外,有人能想到我在做这件事时可能会遇到的其他问题吗?

我把它设为htp而不是http,因为我不在那个级别,所以不能根据栈溢出发布“超级链接”:p

非常感谢

编辑:我正在制作一个程序,因为我有大约50页的word文档,其中充满了电子邮件和其他文本。我只想过滤掉电子邮件。我写了一个程序来做这件事,这非常简单,我只需要把页面存储在一个字符串变量中,程序将在这个变量上运行。

EN

回答 4

Stack Overflow用户

发布于 2012-12-13 10:46:16

你的问题写得不好。请改进一下。按照目前的格式,它将被关闭,因为“太模糊了”。

是否要筛选电子邮件或网站?你的例子是关于网站的,你是关于电子邮件的短信。因为我不知道,而且我决定无论如何都要试着帮助你,所以我决定两者兼而有之。

代码如下:

代码语言:javascript
复制
private static final Pattern EMAIL_REGEX =
        Pattern.compile("[A-Za-z0-9](:?(:?[_\\.\\-]?[a-zA-Z0-9]+)*)@(:?[A-Za-z0-9]+)(:?(:?[\\.\\-]?[a-zA-Z0-9]+)*)\\.(:?[A-Za-z]{2,})");

private static final Pattern WEBSITE_REGEX =
        Pattern.compile("http(:?s?)://[_#\\.\\-/\\?&=a-zA-Z0-9]*");

public static String readFileAsString(String fileName) throws IOException {
    File f = new File(fileName);
    byte[] b = new byte[(int) f.length()];
    InputStream is = null;
    try {
        is = new FileInputStream(f);
        is.read(b);
        return new String(b, "UTF-8");
    } finally {
        if (is != null) is.close();
    }
}

public static List<String> filterEmails(String everything) {
    List<String> list = new ArrayList<String>(8192);
    Matcher m = EMAIL_REGEX.matcher(everything);
    while (m.find()) {
        list.add(m.group());
    }
    return list;
}

public static List<String> filterWebsites(String everything) {
    List<String> list = new ArrayList<String>(8192);
    Matcher m = WEBSITE_REGEX.matcher(everything);
    while (m.find()) {
        list.add(m.group());
    }
    return list;
}

为了确保它正常工作,首先让我们测试一下filterEmails和filterWebsites方法:

代码语言:javascript
复制
public static void main(String[] args) {
    System.out.println(filterEmails("Orange, pizza whatever else joe@somewhere.com a lot of text here. Blahblah blah with Luke Skywalker (luke@starwars.com) hfkjdsh fhdsjf jdhf Paulo <aaa.aaa@bgf-ret.com.br>"));
    System.out.println(filterWebsites("Orange, pizza whatever else joe@somewhere.com a lot of text here. Blahblah blah with Luke Skywalker (http://luke.starwars.com/force) hfkjdsh fhdsjf jdhf Paulo <https://darth.vader/blackside?sith=true&midclorians> And the http://www.somewhere.com as x."));
}

它输出:

代码语言:javascript
复制
[joe@somewhere.com, luke@starwars.com, aaa.aaa@bgf-ret.com.br]
[http://luke.starwars.com/force, https://darth.vader/blackside?sith=true&midclorians, http://www.somewhere.com]

要测试readFileAsString方法,请执行以下操作:

代码语言:javascript
复制
public static void main(String[] args) {
    System.out.println(readFileAsString("C:\\The_Path_To_Your_File\\SomeFile.txt"));
}

如果该文件存在,将打印其内容。

如果您不喜欢它返回List<String>而不是包含空格分隔项的String,那么解决这个问题很简单:

代码语言:javascript
复制
public static String collapse(List<String> list) {
    StringBuilder sb = new StringBuilder(50 * list.size());
    for (String s : list) {
        sb.append(" ").append(s);
    }
    sb.delete(0, 1);
    return sb.toString();
}

粘合在一起:

代码语言:javascript
复制
String fileName = ...;
String webSites = collapse(filterWebsites(readFileAsString(fileName)));
String emails = collapse(filterEmails(readFileAsString(fileName)));
票数 2
EN

Stack Overflow用户

发布于 2012-12-13 09:16:37

我建议您将Word文档另存为纯文本。然后,您可以使用java.io包中的类(例如Scanner来读取文本)。

要解决每次读取一行都会覆盖String变量的问题,可以使用数组或ArrayList。这比在单个String中保存所有网址要理想得多,因为您可以随时轻松地单独访问每个地址。

票数 0
EN

Stack Overflow用户

发布于 2012-12-13 11:08:17

对于第一个问题,从word中取出所有文本,将其放入支持正则表达式的内容中,使用正则表达式引用每行,并以+结束每行。现在编辑最后一行并将+更改为;。在第一行上方写入String links =。将这个新文件复制到java源代码中。这是an example using regexr

为了回答您的第二个问题(思考问题),如果我没记错长度是2^16,那么Java字符串文字是有上限的。

哦,Perl基本上就是为了让你做这类事情而写的(取50页文本,区分什么是url,什么是电子邮件)……更别提grep了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13850989

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档