带有分隔符的java中的SPlit字符串

时间:2015-06-24 16:37:26

标签: java split

我的字符串是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字符串,它看起来像这样: screenshot of eclipse console

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



}
 }

3 个答案:

答案 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)