我的字符串是Spiderman|Batman|Superman
我想拆分字符串,使输出看起来像Spiderman Batman Superman
我试过这个:
String actors = "Spiderman|Batman|Superman";
String [] temp;
String delimiter = "|";
temp = actors.split(delimiter);
for (int i =0; i<temp.length; i++)
System.out.print(temp[i].replaceAll("\\|", " "));
我怎样才能做得更好?输出毫无意义。 谢谢你的期待。 输出仍然与输入相同。编译后,它显示了这个:
Spiderman|Batman|Superman
就像拆分方法从未启动过一样。
请看这张照片。如果我使用100k字符串,它看起来像这样:
请在for循环后查看我的代码中的注释。我的分裂字符串工作但我得到一个奇怪的输出。 (请看截图,我认为它是由“打印”引起的,或者没有更多的空间来代表近300 k的字符串。我用eclipse连接了我的数据库项目。在postgres中,我导入了一个.csv文件,其中包含有关近300k电影的几个信息。如演员导演,年份,等级等。 这是我的问题:
这是我在Java中的代码
package dbs;
import java.sql.*;
public class Fertigevariante {
public static void main(String[] args) {
try {
Class.forName("org.postgresql.Driver");
String url= "jdbc:postgresql://localhost:5432/postgres?user=postgres&password=password";
Connection conn = DriverManager.getConnection(url);
Statement st= conn.createStatement();
ResultSet rs= st.executeQuery("SELECT * FROM kinofilme");
while (rs.next()){
String imdib= rs.getString("imdib");
String rating = rs.getString("rating");
int votes = rs.getInt("votes");
String runtime = rs.getString("runtime");
String name = rs.getString("name");
String directors = rs.getString("directors");
String actors = rs.getString("actors");
String [] temp;
String delimiter ="|";
temp = actors.split(delimiter);
for(int j=0 ; j < temp.length; j++)
System.out.print( temp[j].replaceAll("\\|", " ")); // here is the output problem, look at the screenshot I uploaded here.
int year = rs.getInt("year");
// System.out.println(imdib + "\t" + name + "\t" + year + "\t" + votes + "\t" + directors + "\t" + actors);
}
rs.close();
st.close();
conn.close();
}
catch(Exception e){
e.printStackTrace();
}
}
}
答案 0 :(得分:2)
当你拆分然后使用print
时,你会得到:“SpidermanBatmanSuperman”
由于您需要介于两者之间的空格,因此可以使用以下内容替换最后一行:
System.out.print(temp[i] + " ");
但是你可以通过简单地替换子串“|”来做得更好有空格:“”
System.out.print("Spiderman|Batman|Superman".replaceAll("\\|", " "));
在这两种情况下,输出都是:
Spiderman Batman Superman
重要:
当你拆分/替换
|
时,你应该逃避它,因为它是一个特殊的 具有正则表达式意义的字符!
答案 1 :(得分:2)
你可以quote
split
temp = actors.split(Pattern.quote(delimiter));
答案 2 :(得分:1)
split
接受正则表达式作为参数 - |
是正则表达式中的特殊字符。尝试"\\|"
作为分隔符,或使用Pattern.quote(delimiter)