简体   繁体   中英

Add new line after four commas in string


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.

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

couple of issues with your code:

  • replace returns new string
  • var commasCount = 0 should be outside loop
  • commasCount should 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
                    }
                }
            }

try

ingredients.toString().replace(",", "\\n")

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM