OOP_IO-2x_2023-mirror/Java/lab_5/Sentence.kt

36 lines
1.4 KiB
Kotlin
Raw Normal View History

2023-06-05 16:37:37 +03:00
package OOP.Java.lab_5
2023-06-05 17:11:49 +03:00
class Sentence(sentenceString: String) {
var sentenceArray = Pair<Array<Word>, Array<Punctuation>>(splitWords(sentenceString), splitPunctuation(sentenceString))
2023-06-05 19:05:22 +03:00
2023-06-05 17:11:49 +03:00
init {
2023-06-05 19:05:22 +03:00
// val arrayOfWords: Array<Word> = splitWords(sentenceString)
// val arrayOfPunctuations: Array<Punctuation> = splitPunctuation(sentenceString)
}
private fun splitWords(sentenceString: String): Array<Word> {
2023-06-05 19:05:22 +03:00
return sentenceString.split("[\\p{Punct}\\s]+".toRegex()).filter { it.isNotEmpty() }.map { word -> Word(word) }.toTypedArray()
}
private fun splitPunctuation(sentenceString: String): Array<Punctuation> {
2023-06-05 19:05:22 +03:00
return sentenceString.split(" ").map { word -> Punctuation(word.last().toString()) }.toTypedArray()
}
fun getAllLetters(): Array<Letter> {
var allLetters = arrayOf<Letter>()
this.sentenceArray.first.forEach { allLetters += it.letters }
/*for (i: Word in this.sentenceArray.first) {
println("${i} ${i::class.simpleName} ${i.letters}")
}*/
return allLetters
}
2023-06-05 19:05:22 +03:00
override fun toString(): String {
var sentence = arrayOf<String>()
for (i in this.sentenceArray.first.indices) {
sentence += this.sentenceArray.first[i].toString() + this.sentenceArray.second[i].toString()
}
2023-06-05 19:05:22 +03:00
return sentence.joinToString(" ")
2023-06-05 17:11:49 +03:00
}
2023-06-05 16:37:37 +03:00
}