Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将java字符串变量设置为;htp://website htp://website &引用;_Java_String - Fatal编程技术网

如何将java字符串变量设置为;htp://website htp://website &引用;

如何将java字符串变量设置为;htp://website htp://website &引用;,java,string,Java,String,所以我有一个很大的网站列表,我想把它们都放在一个字符串变量中。我知道我不能单独去所有的链接和逃脱/,但有超过几百个链接。有没有一种方法可以进行“块转义”,从而使“块”之间的所有内容都转义?这是我想要保存在变量中的内容的示例 String links="http://website http://website http://website http://website http://website http://website" 还有谁能想到我在做这件事时可能遇到的其他问题吗 我把它改为htp

所以我有一个很大的网站列表,我想把它们都放在一个字符串变量中。我知道我不能单独去所有的链接和逃脱/,但有超过几百个链接。有没有一种方法可以进行“块转义”,从而使“块”之间的所有内容都转义?这是我想要保存在变量中的内容的示例

String links="http://website http://website http://website http://website http://website http://website"
还有谁能想到我在做这件事时可能遇到的其他问题吗

我把它改为htp而不是http,因为我不允许根据堆栈溢出发布“超链接”,因为我不在那个级别:p

非常感谢


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

我不确定你指的是什么类型的“网站列表”,但对于以逗号分隔的网站文件,您可以读取整个文件,并使用
字符串
拆分
函数获取数组,或者您可以使用
缓冲读取器
逐行读取文件并添加到
数组列表中

从那里,您可以简单地循环数组并附加到
字符串
,或者如果需要:

执行“块转义”,使“块”之间的所有内容都转义

您可以使用正则表达式根据模式提取每个
字符串的部分:

String oldString = "<someTag>I only want this part</someTag>";
String regExp = "(?i)(<someTag.*?>)(.+?)(</someTag>)";
String newString = oldString.replaceAll(regExp, "$2");
String oldString=“我只想要这部分”;
字符串regExp=“(?i)(.+?)()”;
字符串newString=oldString.replaceAll(regExp,“$2”);
由于
“$2”
,上面的表达式将删除xml标记,这意味着您对表达式的第二组感兴趣,其中的组由圆括号
()
标识。 使用
“$1$3”
应该只提供周围的xml标记

字符串
中删除某些“块”的另一种更简单的方法是
字符串
替换
函数,要删除块,只需将空字符串作为新值传入即可


我希望这些都能有所帮助,否则您可以尝试提供一个完整的示例来输入“网站列表”和所需的输出

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


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

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

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

代码如下:

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;
}
要测试readFileAsString方法,请执行以下操作:

public static void main(String[] args) {
    System.out.println(readFileAsString("C:\\The_Path_To_Your_File\\SomeFile.txt"));
}
如果该文件存在,将打印其内容

如果您不喜欢它返回
列表
而不是
字符串
,该字符串包含按空格划分的项目,那么这很容易解决:

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

对于第一个问题,从word中取出所有文本,放入与正则表达式类似的内容中,使用正则表达式引用每一行,并在每一行末尾加上
+
。现在编辑最后一行并将
+
更改为
。在第一行上方写入
字符串链接=
。将此新文件复制到java源代码中。 给你

为了回答您的第二个问题(思考问题),如果我正确地回忆起长度为2^16,那么Java字符串文本有一个上限


哦,基本上是为你写的这样的事情(拿50页的文本,分开什么是url和什么是电子邮件)。。。更不用说了。

为什么要在一个字符串中,而不是在一个固定大小的
字符串[]
中,每个索引有一个链接,或者是一个动态的
java.util.List
?您不需要转义正斜杠,只需要转义反斜杠。这里的“转义”是什么意思?您的意思是带有协议的前缀(即,将
“http://”添加到
“网站”
?(如@dasblinkenlight所述,如果您已经有
)http://website“
,它不需要任何转义,就像插入转义字符一样。”@vege显示一些预期的输出。以及一些您尝试过的代码。@vegetablelasagna您有问题,您正在使用word,现在您有更多的问题。请看:我不是想建议他使用正则表达式解析html或xml文档,我只是想给出一个使用示例:)
public static void main(String[] args) {
    System.out.println(readFileAsString("C:\\The_Path_To_Your_File\\SomeFile.txt"));
}
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();
}
String fileName = ...;
String webSites = collapse(filterWebsites(readFileAsString(fileName)));
String emails = collapse(filterEmails(readFileAsString(fileName)));