Reputation: 85
I have string with text and numbers like this for example
var text = "1 Hello world 2 how are you 3 im fine here"
How i can make it start new line by every number?? Like this
1 Hello world
2 how are you
3 I'm fine
And That is the text var my_text = "1 فِي الْبَدْءِ خَلَقَ اللهُ السَّمَاوَاتِ وَالأَرْضَ.
2 وَكَانَتِ الأَرْضُ خَرِبَةً وَخَالِيَةً، وَعَلَى وَجْهِ الْغَمْرِ ظُلْمَةٌ، وَرُوحُ اللهِ يَرِفُّ عَلَى وَجْهِ الْمِيَاهِ.
3 وَقَالَ اللهُ: «لِيَكُنْ نُورٌ»، فَكَانَ نُورٌ.
4 وَرَأَى اللهُ النُّورَ أَنَّهُ حَسَنٌ. وَفَصَلَ اللهُ بَيْنَ النُّورِ وَالظُّلْمَةِ.
5 وَدَعَا اللهُ النُّورَ نَهَارًا، وَالظُّلْمَةُ دَعَاهَا لَيْلاً. وَكَانَ مَسَاءٌ وَكَانَ صَبَاحٌ يَوْمًا وَاحِدًا.
6 وَقَالَ اللهُ: «لِيَكُنْ جَلَدٌ فِي وَسَطِ الْمِيَاهِ. وَلْيَكُنْ فَاصِلاً بَيْنَ مِيَاهٍ وَمِيَاهٍ».
7 فَعَمِلَ اللهُ الْجَلَدَ، وَفَصَلَ بَيْنَ الْمِيَاهِ الَّتِي تَحْتَ الْجَلَدِ وَالْمِيَاهِ الَّتِي فَوْقَ الْجَلَدِ. وَكَانَ كَذلِكَ.
8 وَدَعَا اللهُ الْجَلَدَ سَمَاءً. وَكَانَ مَسَاءٌ وَكَانَ صَبَاحٌ يَوْمًا ثَانِيًا.
9 وَقَالَ اللهُ: «لِتَجْتَمِعِ الْمِيَاهُ تَحْتَ السَّمَاءِ إِلَى مَكَانٍ وَاحِدٍ، وَلْتَظْهَرِ الْيَابِسَةُ». وَكَانَ كَذلِكَ.
10 وَدَعَا اللهُ الْيَابِسَةَ أَرْضًا، وَمُجْتَمَعَ الْمِيَاهِ دَعَاهُ بِحَارًا. وَرَأَى اللهُ ذلِكَ أَنَّهُ حَسَنٌ. "
Just for the info:the text is in sqlite database and I want to show it in android text view
Upvotes: 2
Views: 221
Reputation: 33829
This is a combination of @RandallFlagg's and @user3357604's answers and it does literally what was asked for, possible more efficently:
val text = "1 فِي الْبَدْءِ خَلَقَ اللهُ السَّمَاوَاتِ وَالأَرْضَ. 2 وَكَانَتِ الأَرْضُ خَرِبَةً وَخَالِيَةً، وَعَلَى وَجْهِ الْغَمْرِ ظُلْمَةٌ، وَرُوحُ اللهِ يَرِفُّ عَلَى وَجْهِ الْمِيَاهِ. 3 وَقَالَ اللهُ: «لِيَكُنْ نُورٌ»، فَكَانَ نُورٌ. 4 وَرَأَى اللهُ النُّورَ أَنَّهُ حَسَنٌ. وَفَصَلَ اللهُ بَيْنَ النُّورِ وَالظُّلْمَةِ. 5 وَدَعَا اللهُ النُّورَ نَهَارًا، وَالظُّلْمَةُ دَعَاهَا لَيْلاً. وَكَانَ مَسَاءٌ وَكَانَ صَبَاحٌ يَوْمًا وَاحِدًا.6 وَقَالَ اللهُ: «لِيَكُنْ جَلَدٌ فِي وَسَطِ الْمِيَاهِ. وَلْيَكُنْ فَاصِلاً بَيْنَ مِيَاهٍ وَمِيَاهٍ». 7 فَعَمِلَ اللهُ الْجَلَدَ، وَفَصَلَ بَيْنَ الْمِيَاهِ الَّتِي تَحْتَ الْجَلَدِ وَالْمِيَاهِ الَّتِي فَوْقَ الْجَلَدِ. وَكَانَ كَذلِكَ. 8 وَدَعَا اللهُ الْجَلَدَ سَمَاءً. وَكَانَ مَسَاءٌ وَكَانَ صَبَاحٌ يَوْمًا ثَانِيًا.9 وَقَالَ اللهُ: «لِتَجْتَمِعِ الْمِيَاهُ تَحْتَ السَّمَاءِ إِلَى مَكَانٍ وَاحِدٍ، وَلْتَظْهَرِ الْيَابِسَةُ». وَكَانَ كَذلِكَ. 10 وَدَعَا اللهُ الْيَابِسَةَ أَرْضًا، وَمُجْتَمَعَ الْمِيَاهِ دَعَاهُ بِحَارًا. وَرَأَى اللهُ ذلِكَ أَنَّهُ حَسَنٌ. "
val res = text.replace(Regex("""(\d+)\s""")) { match ->
val (num) = match.destructured
"\n$num "
}
println(res)
Upvotes: 2
Reputation: 22635
You can just split this string by regex.
One option would be to use \\s(?=\\d+)
, which will match whitespace character followed by any number of digits. For example:
val str = "1 Hello world 2 how are you 3 im fine here"
val r = str.split("\\s(?=\\d+)".toRegex())
r.forEach(::println)
and then to create one string with newlines use joinToString
:
println(r.joinToString("\n"))
Upvotes: 3
Reputation: 3828
Try this ..use '< br >' instead of '\n' if kotlin doesn't like it
example string
str = '1 one 2 two, two and a half, 3 three and four and five';
console.log(str);
--
1 one 2 two, two and a half, 3 three and four and five
example solution
str2 = str.replace(/.(?=[0-9]\s)/gi, '\n');
console.log(str2);
--
1 one
2 two, two and a half,
3 three and four and five
Upvotes: -1
Reputation:
I have used one kotlin method to remove whitespace with trimMargin() function and By default | is used as margin prefix.
var text = """|1 Hello world
|2 how are you
|3 im fine here""".trimMargin()
println(text)
Upvotes: 1