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)", "")
"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","");
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
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")));
}
Related
Hi I'm petty new to java and I have a question,
I'm trying to replace the String " 22(S)" with " 22(I)" but for some reason the replace first doesn't replace the String.
Here is my code:
public class tes {
public static void main(String[] args) {
int y = 22;
String x = " 22(S)";
x = x.replaceFirst(" " + y + "(S)", " " + y + "(I)");
System.out.println(x);
}
}
While I know that I can do x.replaceFirst("S","I") , I want to understand why this is still producing 22(S) with my current code. Thanks.
Because ( and ) are grouping operators in regular expression. You need to escape them in the match term. Like,
x = x.replaceFirst(" " + y + "\\(S\\)", " " + y + "(I)");
And I get
22(I)
with no other changes.
public class Replace {
public static void main(String[] args) {
int y = 22;
String x = " 22(S)";
x = x.replaceAll(" " + y + "\\(S\\)", " " + y + "(I)");
System.out.println(x);
}
}
By using replaceAll also we can replace all the S letters to I
Not quite sure why this is failing, worked fine on a previous class/test pair.
Test:
#Test
public void testToString() {
OrderLine o = new OrderLine("Tuna 4 pack", 399 , 2);
String toStr = o.toString();
assertTrue("The toString method should be in the standard convention format",
toStr.startsWith("OrderLine:[") &&
toStr.contains("=" + o.getId() + ", ") &&
toStr.contains("=" + o.getUnitPrice() + ", ") &&
toStr.endsWith("=" + o.getQuantity() + "]"));
}
Class Function:
public String toString()
{
return ("OrderLine:[ ID = " + id +
", UnitPrice = " + unitPrice +
", Quantity = " + quantity +
"]");
}
Apologies if the answer to this is really obvious, its been grating me for some time and I don't exactly have any fellow students I can ask for help right now.
Thanks!
I had no idea that the spaces AFTER the equals mattered as my mind just seems to have read that they were irrelevant. I only put them there for the purpose of readability (my mistake I know)
This is the rectified code o.O
return ("OrderLine:[ID =" + id +
", UnitPrice =" + unitPrice +
", quantity =" + quantity +
"]");
I'm starting with this String:
"NAME-RAHUL KUMAR CHOUDHARY ADDRESS-RAJDHANWAR DISTRICT-GIRIDIH STATE-JHARKHAND PIN CODE-825412"
I want to split the name and address, and print it like this:
NAME:RAHUL KUMAR CHOUDHARY , DDRESS-RAJDHANWAR DISTRICT-GIRIDIH STATE-JHARKHAND PIN CODE-825412. like this
This is what I have so far:
String str_colArow3 = colArow3.getContents();
//Display the cell contents
System.out.println("Contents of cell Col A Row 3: \""+str_colArow3 + "\"");
if(str_colArow3.contains("NAME"))
{
}
else if(str_colArow3.contains("ADDRESS"))
{
}
String string = "NAME-RAHUL KUMAR CHOUDHARY ADDRESS-RAJDHANWAR DISTRICT-GIRIDIH STATE-JHARKHAND PIN CODE-825412";
String[] parts = string.split("-");
string = "Name: " + parts[1].substring(0, parts[1].length() - 7)
+ "\nAdress: " + parts[2] + " - " + parts[3]
+ "\nPin Code: " + parts[5];
Something like this. Check out the split() method for strings, your string is a bit poorly formatted to use this, though. You have to adjust for your own needs.
Edit: Better way to do this, with different string input.
String string = "RAHUL KUMAR CHOUDHARY:RAJDHANWAR:GIRIDIH:JHARKHAND:825412";
String[] parts = string.split(":");
string = "Name: " + parts[0] + "\n"
+ "Address: " + parts[1] + "\n"
+ "District: " + parts[2] + "\n"
+ "State: " + parts[3] + "\n"
+ "Pin Code: " + parts[4] + "\n";
I want customize a string with results that will be written in a TextView but not works. I just want color some part of text using html tags but it's still all text with same color. This is what i wrote so far:
#Override
public String toString() {
return (Html.fromHtml("<font color=\"#e61624\">"+fromHour+"</font>")) + " " + from + " / " + toHour + " " + to;
}
Thanks
I wouldn't use Html.fromHtml inside the toString() method.
In toString(), simply return the corresponding text:
return "<font color=\"#e61624\">"+fromHour+"</font> " + from + " / " + toHour + " " + to;
Then call:
textView.setText(Html.fromHtml(yourObject.toString());
// Try this way,hope this will help you to solve your problem.
yourTextView.setText(Html.fromHtml("<font color=\"#e61624\">"+fromHour+"</font> " + from + " / " + toHour + " " + to));
String text = "<font color=\"#e61624\">"+"<small>" + "Hello"
+ "</small>"+"</font>";
Html.fromHtml(text);
I have a string
String str = "line1"+"\n" +
"line2"+"\n" +
"line3"+"\n" +
"line4"+"\n" +
"line5"+"\n" +
"line6"+"\n" +
"line7"+"\n" +
"line8"+"\n" +
"line9"+"\n" +
"line10"+"\n" +
"line11"+"\n" +
"line12"+"\n" +
"line13"+"\n" +
"line14"+"\n" +
"line15"+"\n" +
"line16"+"\n" +
"line17"+"\n";
I want to get out of it an array of strings
String str1 = "line1"+"\n" +
"line2"+"\n" +
"line3"+"\n" +
"line4"+"\n";
String str2 = "line5"+"\n" +
"line6"+"\n" +
"line7"+"\n" +
"line8"+"\n";
String str3 = "line9"+"\n" +
"line10"+"\n" +
"line11"+"\n" +
"line12"+"\n";
String str4 = "line13"+"\n" +
"line14"+"\n" +
"line15"+"\n" +
"line16"+"\n";
String str5 = "line17"+"\n";
if I do so
String[] str1 = str.split("\n");
I get an array of strings, in which only one line, and I need it for a few
instead of the string I will have the file from which I plan to read the text in a row
for splitting string with particular format you need to specify regular expression
so in your case regular expression will be ("\r\n")
Look Here