我在数据库中有很多字符串,如下所示:"\\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;
}
答案 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
这确实做得很好!!