Since I'm not able to find a solution to this problem I'm going to post here a question, hoping someone will help me.
I have a string like this "One, Two, Three, Four, Five, Six, ..." and I need to find a way to insert a new line (\n) after the fourth comma, in this case "One, Two, Three, Four, \n Five, Six, ...".
And this is the code I'm trying to use
for (letters in ingredients.toString()) {
var commasCount = 0
if (letters.toString() == ",") {
commasCount
if (commasCount == 4) {
ingredients.toString().replace(",", "\n")
}
}
}
UPDATE:
This is my code now, no errors, no warnings but the output is now like this "[Ljava.lang.String@1c7172b" instead of the ingredients, what am I missing now ?
UPDATE PT.2:
database.collection("Pizze").whereEqualTo("section", sectionNumber).get()
.addOnCompleteListener {result ->
if (result.isSuccessful) {
for (document in result.result) {
val name = document.data["_name"].toString()
val price = document.data["price"].toString()
val section = document.data["section"].toString()
var ingredients = arrayOf(document.data["ingredients"].toString()
.replace("[", "")
.replace("]", "")).toString()
var commasCount = 0
for (letters in ingredients.indices) {
if (ingredients[letters].toString() == ",") {
commasCount
if (commasCount == 4) {
commasCount = 0
ingredients = arrayOf(ingredients.replaceRange(letters, letters 2, ", \\n ")).toString()
}
}
}
data.add(PizzaViewModel(name, price, section, arrayOf(ingredients)))
data.sortBy { it.name }
val adapter = PizzaCustomAdapter(data, baseContext)
recyclerView.adapter = adapter
}
}
}
Thanks in advance to everyone that will try to help me.
CodePudding user response:
You could do this
fun main() {
val string = "One, Two, Three, Four, Five, Six, Seven, Eight, Nine"
val result = string.split(", ")
.chunked(4)
.joinToString("\n") { it.joinToString(", ") }
println(result)
}
Output:
One, Two, Three, Four
Five, Six, Seven, Eight
Nine
CodePudding user response:
couple of issues with your code:
replacereturns new stringvar commasCount = 0should be outside loopcommasCountshould be reset once reached 4
try this out:
var ingredients = "One, Two, Three, Four, Five, Six, Two, Three, Four, Five, Six"
var commasCount = 0
for (letters in ingredients.indices) {
if (ingredients[letters].toString() == ",") {
commasCount
if (commasCount == 4) {
commasCount = 0
ingredients = ingredients.replaceRange(letters, letters 2, ", \n")
}
}
}
Output will be:
One, Two, Three, Four,
Five, Six, Two, Three
Four, Five, Six
UPDATE: convert it to array after adding new line
database.collection("Pizze").whereEqualTo("section", sectionNumber).get()
.addOnCompleteListener {result ->
if (result.isSuccessful) {
for (document in result.result) {
val name = document.data["_name"].toString()
val price = document.data["price"].toString()
val section = document.data["section"].toString()
var ingredients = document.data["ingredients"].toString()
.replace("[", "")
.replace("]", "")
var commasCount = 0
for (letters in ingredients.indices) {
if (ingredients[letters].toString() == ",") {
commasCount
if (commasCount == 4) {
commasCount = 0
ingredients = ingredients.replaceRange(letters, letters 2, ", \n")
}
}
}
data.add(PizzaViewModel(name, price, section, arrayOf(ingredients)))
data.sortBy { it.name }
val adapter = PizzaCustomAdapter(data, baseContext)
recyclerView.adapter = adapter
}
}
}
CodePudding user response:
try
ingredients.toString().replace(",", "\\n")
