我应该如何从str中获取此特定文本?

时间:2012-08-09 03:55:03

标签: java

我在数据库中有很多字符串,如下所示:"\\LDDESKTOP\news\1455Bloomberg Document # 180784.txt"。我想在最后一个斜杠之后得到文件名。

我只是以正常方式这样做:

str.substring(str.lastIndexOf("\\")+1)

但它不起作用,因为单斜杠用于改变含义。有没有像java这样的方法告诉编译器将它视为像str=r'.......'这样的普通字符串。

或如何将字符串更改为"\\\\LDDESKTOP\\news\\1455Bloomberg Document # 180784.txt"。所以我可以将它传递给File Object来读取这个文件。

我应该怎么做?或其他解决方法。

感谢。

新闻表中名为path(varchar(150))的列就像这样的“\ LDDESKTOP \ news \ 1362Bloomberg Document#180691.txt”

我在路径上进行正常选择。

代码:

public List<String> getNewsFileName(String startTime,String endTime) {
    List<String> newsFileNames = new ArrayList<String>();
    String tableName = ConfigFile.getConfig("configuration.txt","SQLServerTable");
    String sql = "select Path from [" + tableName + "] where localtime >= '" + startTime + "' and localtime <= '" + endTime + "'";
    try {
        if(connection==null) {
            InvertedIndex.logger.log(Level.SEVERE, "Database connection has not been initialized");
            System.exit(-1);
        }
        stmt=connection.createStatement();
        ResultSet rs = stmt.executeQuery(sql);

        while(rs.next()) {
            String path=rs.getString(1);
            newsFileNames.add(path);
        }

    } catch (SQLException e) {
        InvertedIndex.logger.log(Level.SEVERE,"Fail to store news");
    }
    return newsFileNames;
}

3 个答案:

答案 0 :(得分:3)

使用Escape Sequences指定某些特殊字符,这些特殊字符也分配了java属性。

要在字符串中打印单个反斜杠字符,请使用一组2个反斜杠\\

String string = new String("\\\\LDDESKTOP\\news\\1455Bloomberg Document # 180784.txt");

String str = string.substring(string.lastIndexOf("\\")+1);

System.out.println(str);

打印

1455Bloomberg Document # 180784.txt

编辑1:

获得字符串后,可以使用相同的转义字符将其传回。

String string = "\\\\LDDESKTOP\\news\\" + str;

这会输出原始

\\LDDESKTOP\news\1455Bloomberg Document # 180784.txt

编辑2:

根据您的要求,为了将所有单个反斜杠转换为双反斜杠,您必须同时使用转义序列和字符串“replace”方法。

如果你有这个字符串:

String string = new String("\\\\LDDESKTOP\\news\\1455Bloomberg Document # 180784.txt");

您需要调用此代码以“加倍”每个反斜杠:

String newString = string.replace("\\", "\\\\");

这会产生以下结果:

//Note this is before we print it.  This illustrates all the escape sequences.
\\\\\\\\LDDESKTOP\\\\news\\\\1455Bloomberg Document # 180784.txt

字符串本身将如下所示:

\\\\LDDESKTOP\\news\\1455Bloomberg Document # 180784.txt

答案 1 :(得分:2)

此代码:

String st = "\\LDDESKTOP\news\1455Bloomberg Document # 180784.txt";

st = st.replace("\n", "\\n");

st = st.replace("\\", "\\\\");

String str = st.substring(st.lastIndexOf("\\")+1);

测试它。 “\ n”是换行符。

答案 2 :(得分:0)

感谢您所做的一切努力。最后,我想我找到了答案。

我没有处理java程序中的字符串,而是直接使用sql函数处理字符串。

以下是我的工作。

SELECT * substring(path,len(path)-charindex('\',reverse(path))+2,charindex('\',reverse(path)))
 FROM News

这确实做得很好!!