ktm5124
ktm5124

Reputation: 12123

How to replace new lines

Unfortunately, I'm having some difficulty replacing new lines.

public class Example {

    static String s = "73167176531330624919225119674426574742355349194934\n" +
        "96983520312774506326239578318016984801869478851843\n" +
        "85861560789112949495459501737958331952853208805511\n" +
        "12540698747158523863050715693290963295227443043557\n" +
        "66896648950445244523161731856403098711121722383113\n" +
        "62229893423380308135336276614282806444486645238749\n" +
        "30358907296290491560440772390713810515859307960866\n" +
        "70172427121883998797908792274921901699720888093776\n" +
        "65727333001053367881220235421809751254540594752243\n" +
        "52584907711670556013604839586446706324415722155397\n" +
        "53697817977846174064955149290862569321978468622482\n" +
        "83972241375657056057490261407972968652414535100474\n" +
        "82166370484403199890008895243450658541227588666881\n" +
        "16427171479924442928230863465674813919123162824586\n" +
        "17866458359124566529476545682848912883142607690042\n" +
        "24219022671055626321111109370544217506941658960408\n" +
        "07198403850962455444362981230987879927244284909188\n" +
        "84580156166097919133875499200524063689912560717606\n" +
        "05886116467109405077541002256983155200055935729725\n" +
        "71636269561882670428252483600823257530420752963450".replaceAll("\\n", "");

    public static void main(String[] args) {
        System.out.println(s);
    }
}    

I would like to remove all occurrences of \n from String s. I tried looking up the answer on StackOverflow, but every post seems to have a different answer (and they are all complicated and hard to remember).

Is there a simple way of doing this?


I have also tried

replaceAll("\n", "")
replaceAll("\\\\n", "")
replaceAll(System.getProperty("line.separator"), "")
replaceAll("(\\r|\\n)", "")

Upvotes: 2

Views: 173

Answers (3)

Pshemo
Pshemo

Reputation: 124215

"hello" + "world".replace("o","")

is same as

"hello" + ("world".replaceAll("o",""))

So replaceAll will affect only last part of your string, which in your case is

"71636269561882670428252483600823257530420752963450".replaceAll("\\n", ""). 

To solve this problem use parenthesis to first concatenate all string parts, and then call replace on resulting string.

static String s = (
        "73167176531330624919225119674426574742355349194934\n" +
        "96983520312774506326239578318016984801869478851843\n" +
        "85861560789112949495459501737958331952853208805511\n" +
        "12540698747158523863050715693290963295227443043557\n" +
        "66896648950445244523161731856403098711121722383113\n" +
        "62229893423380308135336276614282806444486645238749\n" +
        "30358907296290491560440772390713810515859307960866\n" +
        "70172427121883998797908792274921901699720888093776\n" +
        "65727333001053367881220235421809751254540594752243\n" +
        "52584907711670556013604839586446706324415722155397\n" +
        "53697817977846174064955149290862569321978468622482\n" +
        "83972241375657056057490261407972968652414535100474\n" +
        "82166370484403199890008895243450658541227588666881\n" +
        "16427171479924442928230863465674813919123162824586\n" +
        "17866458359124566529476545682848912883142607690042\n" +
        "24219022671055626321111109370544217506941658960408\n" +
        "07198403850962455444362981230987879927244284909188\n" +
        "84580156166097919133875499200524063689912560717606\n" +
        "05886116467109405077541002256983155200055935729725\n" +
        "71636269561882670428252483600823257530420752963450"
    ).replaceAll("\\n", "");

But in situation where we are not dealing with initializing field, I would prefer splitting this "one-liner" into more steps which will be more readable and you will avoid errors like one from your question:

//concatenation
String s =  "....."
           +"....."
           :
           +".....";

//modification
s = s.replaceAll("\\n","");

Upvotes: 8

yoseph1998
yoseph1998

Reputation: 355

First of all, when you are doing

static String s = "73167176531330624919225119674426574742355349194934\n" +
        "96983520312774506326239578318016984801869478851843\n" +
        "85861560789112949495459501737958331952853208805511\n" +
        "12540698747158523863050715693290963295227443043557\n" +
        "66896648950445244523161731856403098711121722383113\n" +
        "62229893423380308135336276614282806444486645238749\n" +
        "30358907296290491560440772390713810515859307960866\n" +
        "70172427121883998797908792274921901699720888093776\n" +
        "65727333001053367881220235421809751254540594752243\n" +
        "52584907711670556013604839586446706324415722155397\n" +
        "53697817977846174064955149290862569321978468622482\n" +
        "83972241375657056057490261407972968652414535100474\n" +
        "82166370484403199890008895243450658541227588666881\n" +
        "16427171479924442928230863465674813919123162824586\n" +
        "17866458359124566529476545682848912883142607690042\n" +
        "24219022671055626321111109370544217506941658960408\n" +
        "07198403850962455444362981230987879927244284909188\n" +
        "84580156166097919133875499200524063689912560717606\n" +
        "05886116467109405077541002256983155200055935729725\n" +
        "71636269561882670428252483600823257530420752963450".replaceAll("\\n", "");

you are only replacing the last concatenation of that string (Note: which has no "\n").

what you need to do is get rid of that replaceAll in your string declaration, and in your main method do s = s.replaceAll("\n", ""); like the following:

public static void main(String[] args) {
    s = s.replaceAll("\n", "");
    System.out.println(s);
}

Tested and works :D Hope this was helpful :D

Upvotes: 4

Dimitri Grishin
Dimitri Grishin

Reputation: 63

You could split and join the string before printing it like this:

public static void main(String[] args) {
    System.out.println(String.join("", s.split("\n")));
}

Upvotes: 0

Related Questions