Reputation: 223
I have been trying to construct a while loop for looping through a string when it contains a 'pattern' i'm looking for. The string is a local variable, declared just above the while loop and I am unable to substring it within my while loop, so that each consecutive loop will look at the next part of the string.
I would appreciate any help on how I could solve this problem
Here's the code; just so u have the idea the onlineList usually comes as array list output e.g. [Adrian, Bob, Buddy]
String onlineList = networkInput.nextLine();
//Declare a local variable for modified online list, that will replace all the strings that contain ", " "[" and "]"
String modifiedOnlineList = onlineList.replaceAll("\\, ", "\n").replaceAll("\\[", "").replaceAll("\\]", "");
//Loop the modifiedOnlineList string until it contains "\n"
while (modifiedOnlineList.contains("\n")) {
//A local temporary variable for the first occurence of "\n" in the modifiedOnlineList
int tempFirstOccurence = modifiedOnlineList.indexOf("\n");
//Obtain the name of the currently looped user
String tempOnlineUserName = modifiedOnlineList.substring(0, tempFirstOccurence);
//Substring the remaining part of the string.
modifiedOnlineList.substring(tempFirstOccurence + 2);
System.out.println(modifiedOnlineList);
}
Upvotes: 1
Views: 1074
Reputation: 1
modifiedOnlineList.substring() just returns a substring of the original modifiedOnlineList, it doesn't modify modifiedOnlineList.
Upvotes: 0
Reputation: 5308
Strings are immutable. That means that substring
does not modify the string itself, but returns a new string object. So you should use:
modifiedOnlineList = modifiedOnlineList.substring(tempFirstOccurence + 2);
Upvotes: 1
Reputation: 121998
String is immutable in java
modifiedOnlineList = modifiedOnlineList.substring(tempFirstOccurence + 2);
You have to receive the new String
Object returned by substring
method.
modifiedOnlineList.substring(tempFirstOccurence + 2);
System.out.println(modifiedOnlineList); // still old value
when you receive that
modifiedOnlineList = modifiedOnlineList.substring(tempFirstOccurence + 2);
System.out.println(modifiedOnlineList); // now re assigned to substring value
Upvotes: 1