2015-03-22 3 views
2

К сожалению, у меня возникли трудности с заменой новых строк.Как заменить новые строки

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); 
    } 
}  

Я хотел бы, чтобы удалить все вхождения \n из строки s. Я попытался найти ответ на StackOverflow, но у каждого сообщения, похоже, есть другой ответ (и все они сложны и трудно запоминаются).

Есть ли простой способ сделать это?


Я также попытался

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

попробуйте следующее: 'replace (" \ n "," ");' – jfun

+0

Это тоже не работает :( – ktm5124

+0

Я знаю, что дублирующий вопрос не идентичен, но ответ на этот вопрос включен в ответ на этот вопрос. – Keppil

ответ

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

такой же, как

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

Так replaceAll затронет только последнюю часть вашей строки, которая в вашем случае является

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

Для решения этой проблемы употребления скобку к первой СЦЕПИТЬ является все части строк, а затем замените то, что вы хотите.

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", ""); 

Но в случае переменной без поля я предпочел бы пропустить это решение и вместо «однострочника» использовать простой код сборки из:

  1. конкатенации
  2. модификация

как

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

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

@ yoseph1998 Будет. Механизм Regex в Java позволяет нам писать '\ n' как' '\\ n" '. Чтобы создать '' '' '' literal в regex engine, нам нужно будет написать его как '' \\\\ '' string. '' \\ "' является метасимволом регулярного выражения и может использоваться для создания '\ n', который будет представлять разрыв строки. – Pshemo

+0

мой плохой, я удалю комментарий – yoseph1998

+0

Nice catch. Еще лучше было бы использовать 'replace ', хотя вы не используете регулярное выражение. – Keppil

4

Прежде всего, когда вы делаете

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", ""); 

вы только заменить последнюю конкатенацию этой строки (Примечание: который не имеет "\n").

то, что вам нужно сделать, это избавиться от этого replaceAll в строке объявления, а также в основной метод сделать s = s.replaceAll("\n", ""); как следующее:

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

протестирована и работает: D Надеюсь, что это было полезно: D

0

Вы можете разделить и присоединить строку перед печатью, как это:

public static void main(String[] args) { 
    System.out.println(String.join("", s.split("\n"))); 
} 
Смежные вопросы