The third iteration of my for loop is only running once when it should be running twice.
First I have this array of words
String [] words = {"Lorem","ipsum","dolor","sit","amet","consectetur","adipiscing","elit.",,,,}
spaceCount = 7;
wordCount = 4;
while(wordCount>-1){
output+=words[start];
System.out.println("output:"+output);
System.out.println("spaceCount:"+spaceCount);
System.out.println("wordCount:"+wordCount);
start++;
System.out.println("j<:"+Math.ceil((double)spaceCount/(double)wordCount));
for(j=0;j<Math.ceil((double)spaceCount/(double)wordCount);j++){
System.out.println("j:"+j);
output+=" ";
spaceCount--;
}
wordCount--;
}
I tried to typecast the Math ceil from double to int but it still produce the same result.
The result that appear is:
output:Lorem
spaceCount:7
wordCount:4
j<:2.0
j:0
j:1
output:Lorem ipsum
spaceCount:5
wordCount:3
j<:2.0
j:0
j:1
output:Lorem ipsum dolor
spaceCount:3
wordCount:2
**j<:2.0
j:0**
output:Lorem ipsum dolor sit
**spaceCount:2
wordCount:1**
j<:2.0
j:0
output:Lorem ipsum dolor sit amet,
but it should be:
output:Lorem ipsum dolor
spaceCount:3
wordCount:2
j<:2.0
j:0
j:1
output:Lorem ipsum dolor sit
**spaceCount:1
wordCount:1
j<:1.0**
j:0
output:Lorem ipsum dolor sit amet,
This question already has answers here:
How do I split a string in Java?
(39 answers)
Closed 3 years ago.
I am trying to split a string to List where the delimiter is the $_$.
For example the text
Lorem ipsum dolor $$ sit amet, consectetur adipiscing $$ elit. Aliquam $_$ eu.
I would like to convert to o list with elements
el1= Lorem ipsum dolor
el2= sit amet, consectetur adipiscing
el3- elit. Aliquam
el4= eu.
I tried the code bellow with no success.Is there any other way?
List<String> myList = new ArrayList<String>(Arrays.asList(s.split("$_$")));
List<String> myList = new ArrayList<>(Arrays.asList(s.split("\\$_\\$")));
List<String> myList = Arrays.asList(s.split("\\$_\\$")); // or simply this
As $ has a special meaning (end-of-text) you need to regex-escape it by a backslash. In a String literal a backslash has to be escaped itself - with a backslash.
I have a string that alternates between text and chapter marks. I'd like to have it in a key-value-array where the key is the chapter name and the value is the chapter content. The text looks like this:
<chapter name="First chapter" />
Lorem ipsum dolor sit amet, consetetur sadipscing elitr.
<chapter name="Second chapter" />
Sed diam nonumy eirmod tempor invidunt ut labore et.
<chapter name="Third chapter" />
Dolore magna aliquyam erat, sed diam voluptua.
The resulting array is supposed to look like this:
[
{"First chapter", "Lorem ipsum dolor sit amet, consetetur sadipscing elitr."},
{"Second chapter", "Sed diam nonumy eirmod tempor invidunt ut labore et."},
{"Third chapter", "Dolore magna aliquyam erat, sed diam voluptua."}
]
How can I do this?
You can use regular expression to locate subject and content. Your case is very suitable for that.
The link below has a summary for regex in java.
http://www.vogella.com/tutorials/JavaRegularExpressions/article.html
As suggested by #devd with this posting, the solution to the above case is XPath. There is an example here.
What I am trying to achieve is to match all words in text, but ignore those words in line (before new line) that start with 4 whitespaces.
Example
Text file to find words:
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut
enim ad minim veniam, quis nostrud exercitation ullamco laboris
nisi ut aliquip ex ea commodo consequat.
This must NOT be matched. Because it has 4 whitespaces at the beginning.
Lorem ipsum dolor sit amet. Ut enim ad minim veniam.
So, the words in following line should be NOT considered to match pattern:
This must NOT be matched. Because it has 4 whitespaces at the beginning.
Code
Here is my regex and it can find all words:
\\b[A-Za-z]+\\b
I know that in Java's RegEx syntax there is except which is ^ symbol but I only know how to use it in more simple expressions.
Maybe following snippet could be a basis for what you want to achieve.
String[] lines = {"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do",
"eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut",
"enim ad minim veniam, quis nostrud exercitation ullamco laboris",
"nisi ut aliquip ex ea commodo consequat.",
"",
" This must NOT be matched. Because it has 4 whitespaces at the beginning.",
"",
"Lorem ipsum dolor sit amet. Ut enim ad minim veniam."};
for (String line : lines) {
if (!line.startsWith(" ")) {
String[] words = line.split("[\\p{IsPunctuation}\\p{IsWhite_Space}]+");
System.out.println("words = " + Arrays.toString(words));
}
}
output
words = [Lorem, ipsum, dolor, sit, amet, consectetur, adipiscing, elit, sed, do]
words = [eiusmod, tempor, incididunt, ut, labore, et, dolore, magna, aliqua, Ut]
words = [enim, ad, minim, veniam, quis, nostrud, exercitation, ullamco, laboris]
words = [nisi, ut, aliquip, ex, ea, commodo, consequat]
words = []
words = []
words = [Lorem, ipsum, dolor, sit, amet, Ut, enim, ad, minim, veniam]
PS: the regex has been borrowed from this answer
The following should do that
(?<!\s{4})\\b[A-Za-z]+\\b
It begins with a negative lookbehind so it won't match anything with \s{4} preceding it.
I have a text String, in this form
Lorem ipsum dolor sit amet,
consectetuer adipiscing elit
,
lo
sed diam
nonummy nibh
quis
nostrud exerci.
So looks realy bad when I set the text in a textView.
I need that the String is loaded in this form
Lorem ipsum dolor sit amet,
consectetuer adipiscing elit,
lo sed diam nonummy nibh quis
nostrud exerci.
Filling all the row (when is possible) before start new line.
Since cannot edit all the db entries to adjust the text.
Use this code to remove all new line special characters in the text
yourstring.replaceAll("[\n\r]", "")