Résumé du résumé de Kotlin

Table des matières

1. Recherche de chaînes

2. Interception de cordes

3. Remplacement de chaîne

Quatrièmement, la segmentation des chaînes

5. Autres

Six, extension Kotlin

6.1. La recherche de caractères est implémentée par défaut

 6.2. Implémentation à l'aide de l'extension kotlin

6.3. Appel 

7. Résumé


1. Recherche de chaînes

Dans le développement proprement dit de la fonction de recherche de chaînes, seules quelques fonctions simples sont utilisées. Ici, je n'en explique que quelques-unes couramment utilisées.

1.1. Obtenir le premier élément

Contient principalement first()| firstOrNull()et first{}| firstOrNull{}quatre fonctions

first()|firstOrNull()

  • Fonction : trouver le premier élément d'une chaîne
  • Différence : si la chaîne est une chaîne vide, la première lèvera NoSuchElementExceptionune exception et la seconde renverranull

exemple:

val str = "kotlin very good"// 如果字符串为空串时,会抛出NoSuchElementException异常
str.first()   <=>   str[0]   <=>   str.get(0)// 如果字符串为空串时,会返回nullstr.firstOrNull()

first{}|firstOrNull{}

  • Fonction : Trouver le premier élément égal à un certain caractère
  • Différence : aucun élément remplissant la condition n'est trouvé, le premier lèvera NoSuchElementExceptionune exception et le second renverranull

exemple:

val str = "kotlin very good"// 如果未查找到满足条件的元素,会抛出NoSuchElementException异常
str.first{ it == 'o' } // 如果未查找到满足条件的元素,会返回nullstr.firstOrNull
{ it == 'o' } 

1.2. Obtenir le dernier élément

Il comprend principalement quatre fonctions de first(), firstOrNull()et first{}etfirstOrNull{}

last()etlastOrNull()

  • Fonction : trouver le dernier élément d'une chaîne
  • Différence : si la chaîne est une chaîne vide, la première lèvera NoSuchElementExceptionune exception et la seconde renverranull

exemple:

val str = "kotlin very good"// 如果字符串为空串时,会抛出NoSuchElementException异常
// 其中 lastIndex 是一个拓展属性,其实现是
length - 1str.last()   <==>   str.get(lastIndex)   <==>  str[lastIndex]// 如果字符串为空串时,会返回nullstr.lastOrNull()

last{}etlastOrNull{}

  • Fonction : trouver le dernier élément égal à un certain caractère
  • Différence : aucun élément remplissant la condition n'est trouvé, le premier lèvera NoSuchElementExceptionune exception et le second renverranull

exemple:

val str = "kotlin very good"// 如果未查找到满足条件的元素,会抛出NoSuchElementException异常
// 其实从源码中我们发现其是对原字符串反转之后再进行遍历查找满足条件的元素。这样遍历的次数就减少了
str.last{ it == 'o' } // 如果未查找到满足条件的元素,会返回nullstr.lastOrNull{ it == 'o' } 

1.3. Rechercher des éléments

1.3.2, find{} | findLast{}
fournit en fait deux fonctions d'ordre supérieur pour trouver des éléments find{}, findLast{}. Cependant, ses composants internes sont tous des appels firstOrNull()et lastOrNull()des fonctions de traitement. Il n'y a pas grand-chose à dire ici.

1.3.2. Trouver l'indice de l'élément correspondant

  • indexOf(): recherche le premier indice d'un élément ou d'une chaîne dans la chaîne d'origine.
  • indexLastOf(): recherche l'indice de la dernière occurrence d'un élément ou d'une chaîne dans la chaîne d'origine.
  • indexOfFirst{}: mêmeindexOf()
  • indexOfLast{}: mêmeindexLastOf()

exemple:

val str = "kotlin very good"
println(str.indexOfFirst { it == 'o' })
println(str.indexOfLast { it == 'o' })
println(str.indexOf('o',0))
println(str.indexOf("very",0))
println(str.lastIndexOf('o'))
println(str.lastIndexOf("good"))

La sortie est :

114171412

2. Interception de cordes

Si vous avez Javades bases en programmation dans d'autres langages. Je pense que vous devriez être familiarisé avec l'interception de cordes. Vous pouvez continuer à regarder vers le bas, tout comme une consolidation de l'interception de cordes. Bien entendu, vous pouvez également ignorer directement cette section, car dans Kotlin, la fonction d'interception de chaîne subString()consiste à appeler la fonction Javadans subString().

En Kotlinplus d'appeler subString()des fonctions, vous pouvez également appeler subSequence()des fonctions. Les amis qui sont intéressés peuvent aller voir le code source.

2.1 subString()Interception avec fonction

Examinons subString()le code source de la fonction

@kotlin.internal.InlineOnly
public inline fun String.substring(startIndex: Int): String = (this as java.lang.String).substring(startIndex)
@kotlin.internal.InlineOnly
public inline fun String.substring(startIndex: Int, endIndex: Int): String = (this as java.lang.String).substring(startIndex, endIndex)
public fun String.substring(range: IntRange): String = substring(range.start, range.endInclusive + 1)

À partir du code source ci-dessus, nous pouvons voir que la fonction in Kotlinest utiliséeJavasubString()

dans:

  • startIndexParamètres : l'indice de début de la chaîne interceptée
  • endIndexParamètre : l'indice de fin de la chaîne interceptée
  • rangParamètre, fait référence à un IntRangtype, représentant une plage

Exemple:

val str = "Kotlin is a very good programming language"
println("s = ${str.substring(10)}")  // 当只有开始下标时,结束下标为length - 1
println(str.substring(0,15))println(str.substring(IntRange(0,15)))

La sortie est :

a very good programming languageKotlin is a verKotlin is a very

Avis:

  • La différence entre utiliser subString(startIndex,endIndex)et subString(rang)quand. On peut le voir à partir des résultats ci-dessus combinés avec le code source.
  • Gardez à l'esprit le cas hors limites de l'indice. c'est StringIndexOutOfBoundsExceptionanormal

2.2 subSequence()Interception avec fonction

En plus d'utiliser la chaîne d'interception Kotlinexpliquée ci-dessus , vous pouvez également utiliser l'interception de fonction.subString()subSequence()

Jetons un coup d'œil à son implémentation source :

public fun subSequence(startIndex: Int, endIndex: Int): CharSequence
public fun CharSequence.subSequence(range: IntRange): CharSequence = subSequence(range.start, range.endInclusive + 1)

D'après le code source, nous pouvons voir que c'est à peu près la subString()même chose qu'une fonction, mais il ne fournit pas seulement startIndexle transfert

Exemple:

val str = "Kotlin is a very good programming language"
println(str.subSequence(0,15))
println(str.subSequence(IntRange(0,15)))

La sortie est :

Kotlin is a verKotlin is a very

3. Remplacement de chaîne

Comme pour la troncature de chaîne ci-dessus, vous pouvez ignorer cette section si vous avez de l'expérience en programmation. Cependant, pour la fonction de remplacement de chaîne, en plus de la fonction ha dans Kotlinl'implémentation , elle fournit également d'autres fonctions telles que , , , , etc. La signification de ces fonctions sera expliquée avec des exemples ci-dessous.Javareplace()replaceFirst()replaceAfter()replaceBefore()replaceIndent()

3.1, fonction remplacer()

replace()La fonction fournit 4 fonctions surchargées. Ils peuvent remplir différentes fonctions

3.1.1、 remplacer(oldChar,newChar,ignoreCase = false)

Fonction : remplace tous les caractères de la chaîne d'origine par de nouveaux caractères. puis renvoie la nouvelle chaîne

  • oldChar: Le caractère à remplacer
  • newChar: Nouveau personnage
  • ignoreCase: s'il faut référencer la fonction Javadans replace(). La valeur par défaut est la fonction falseprête à Javal'emploireplace()

exemple:

// 把字符`a`全部替换为`A`
val str = "Kotlin is a very good programming language"
println(str.replace('a','A'))

La sortie est :

Kotlin is A very good progrAmming lAnguAge

3.1.2、 remplacer(ancienneValeur,nouvelleValeur,ignoreCase = faux)

Fonction : remplace tous les caractères de la chaîne d'origine par de nouveaux caractères. puis renvoie la nouvelle chaîne

  • oldValue: la chaîne à remplacer
  • newValue: nouvelle chaîne
  • ignoreCase: s'il faut référencer la fonction Javadans replace(). La valeur par défaut est la fonction falseprête à Javal'emploireplace()

exemple:

// 把字符串`Kotlin`替换成字符串`Java`val str = "Kotlin is a very good programming language"
println(str.replace("Kotlin","Java"))

La sortie est :

Java is a very good programming language

3.1.3、 remplacer (regex, remplacement)

Fonction : Faites correspondre la chaîne source selon les règles régulières définies et remplacez les chaînes qui respectent les règles par de nouvelles chaînes.

  • regex: expression régulière
  • replacement: nouvelle chaîne

exemple:

// 正则的规则为检测数字,如果为数字则替换成字符串`
kotlin`val str = "1234a kotlin 5678 3 is 4"
println(str.replace(Regex("[0-9]+"),"kotlin"))

La sortie est :

kotlina kotlin kotlin kotlin is kotlin

3.1.4, remplacer (regex : Regex, transformation noinline : (MatchResult) -> CharSequence)

  • Fonction : faites correspondre la chaîne source en fonction des règles régulières définies et transform{}remplacez les chaînes satisfaisant aux règles par de nouvelles chaînes mappées par des fonctions d'ordre supérieur.
  • regex: expression régulière
  • transform: fonction d'ordre supérieur

exemple:

val str = "1234a kotlin 5678 3 is 4"
val newStr = str.replace(Regex("[0-9]+"),{"abcd "})

La sortie est :

abcd abcd abcd abcd a kotlin abcd abcd abcd abcd  abcd  is abcd

Vous pouvez voir la différence entre les deux fonctions à partir des deux fonctions ci-dessus. Vous pouvez lire les informations par vous-même pour comprendre les points de connaissance 高阶函数sur . 正则表达式Xiaosheng ajoutera du contenu pertinent dans les chapitres suivants...

Après l'explication de la replace()fonction ci-dessus. Et plusieurs fonctions surchargées sont analysées. Je crois que tout le monde replace()a une compréhension générale des paramètres de la fonction. Et les fonctions suivantes sont à peu près la même opération. Par conséquent, dans les différentes opérations de fonction suivantes, je n'illustrerai leurs fonctions qu'avec des exemples. L'introduction des paramètres ne sera pas étudiée en détail.

3.2、remplacerPremier()

Fonction : remplacer le premier caractère ou la première chaîne qui remplit la condition par un nouveau caractère ou une nouvelle chaîne

exemple:

val str = "Kotlin is a very good programming language"
println(str.replaceFirst('a','A'))
println(str.replaceFirst( "Kotlin","Java"))

La sortie est :

Kotlin is A very good programming languageJava is a very good programming language

3.3、remplacerAvant()

Fonction : intercepte le premier caractère qui remplit la condition ou la chaîne après la chaîne, y compris le caractère qui remplit la condition ou la chaîne elle-même, et ajoute une nouvelle chaîne devant.

exemple:

val str = "Kotlin is a very good programming language"
println(str.replaceBefore('a',"AA"))
println(str.replaceBefore("Kotlin","Java"))

La sortie est :

AAa very good programming languageJavaKotlin is a very good programming language

3.4、replaceBeforeLast()

Fonction : intercepte le dernier caractère qui remplit la condition ou la chaîne après la chaîne, y compris le caractère qui remplit la condition ou la chaîne elle-même, et ajoute une nouvelle chaîne devant.

exemple:

val str = "Kotlin is a very good programming language"
println(str.replaceBeforeLast('a',"AA"))
println(str.replaceBeforeLast("Kotlin","Java"))

La sortie est :

AAageJavaKotlin is a very good programming language

3.5, remplacerAprès()

Fonction : intercepte le premier caractère qui remplit la condition ou la chaîne devant la chaîne, y compris le caractère qui remplit la condition ou la chaîne elle-même, et ajoute une nouvelle chaîne après.

exemple:

val str = "Kotlin is a very good programming language"
println(str.replaceAfter('a',"AA"))
println(str.replaceAfter("Kotlin","Java"))

La sortie est :

Kotlin is aAAKotlinJava

3.6、replaceAfterLast()

Fonction : intercepte le dernier caractère qui satisfait la condition ou la chaîne avant la chaîne, y compris le caractère ou la chaîne elle-même qui remplit la condition, et ajoute une nouvelle chaîne après.

exemple:

val str = "Kotlin is a very good programming language"
println(str.replaceAfterLast('a',"AA"))
println(str.replaceAfterLast("Kotlin","Java"))

La sortie est :

Kotlin is a very good programming languaAAKotlinJava

Quatrièmement, la segmentation des chaînes

Comme dans la section précédente, en plus des fonctions de Kotlinl'implémentation , des fonctions sont fournies pour diviser les chaînes. Une fois le fractionnement réussi, une collection de chaînes sera renvoyée pour nos opérations ultérieures.Javasplit()splitToSequence()

4.1、 diviser()

split()La fonction fournit également 4une fonction surchargée. Parmi eux, l'utilisation d'une expression régulière comme fractionnement conditionnel en occupe deux. Séparez avec des personnages pour en occuper un. Le fractionnement avec une chaîne en occupe un.

4.1.1. Utiliser des expressions régulières pour diviser

KotlinPour utiliser une expression régulière dans , vous utilisez une classe Regexet Javapour utiliser une expression régulière dans , vous utilisez Patternune classe. Voici des exemples

exemple:

var str2 = "1 kotlin 2 java 3 Lua 4 JavaScript"
val list3 = str2.split(Regex("[0-9]+"))
for (str in list3){   
print("$str \t")
}
println()
val list4 = str2.split(Pattern.compile("[0-9]+"))
for (str in list4){    
print("$str \t")
}

La sortie est :

kotlin  java  Lua  JavaScript     kotlin  java  Lua  JavaScript     

4.1.2, utilisez des caractères ou des chaînes pour diviser

Dans le développement réel du projet, cette méthode est utilisée plus souvent. Cependant, il convient de noter ici que, qu'il soit divisé par caractères ou par chaînes, il s'agit d'un paramètre variable. Autrement dit, le nombre de ses paramètres est indéfini.

exemple:

val str1 = "Kotlin is a very good programming language"
val list1 = str1.split(' ')
for (str in list1)
{   
print("$str \t")
}
println()
val list2 = str1.split(" ")
for (str in list2)
{   
print("$str \t")
}

La sortie est :

Kotlin   is   a   very     good    programming     languageKotlin   is   a   very     good    programming     language

Voici un exemple de cas de paramètre variable :

val str3 = "a b c d e f g h 2+3+4+5"val list5 = str3.split(' ','+')for (str in list5){    print("$str \t")}

La sortie est :

a     b   c   d   e   f   g   h   2   3   4   5 

4.2、 splitToSequence()

Cette fonction peut également être divisée par chaîne ou caractère, et son utilisation est la même que la split()fonction ci-dessus. Pas grand chose à dire ici...

5. Autres

En plus des points expliqués ci-dessus, il existe de nombreux traitements couramment utilisés, tels que la détection si la chaîne est une chaîne vide, si elle l'est, l'obtention de la longueur nullde la chaîne, l'inversion de la chaîne, le comptage, la conversion du tableau de caractères, l'obtention du caractère de l'indice spécifié, etc.

5.1. Obtenir la longueur de la chaîne

Il Kotlinexiste deux façons d'obtenir la longueur d'une chaîne dans . En fait c'est juste un

  1. Obtenez la longueur directement avec lengthl'attribut
  2. Obtenez-le avec count()une fonction. En fait, count()la méthode de la fonction renvoie également lengthla longueur.

Exemple:

val str = "kotlin very good"// 1. 直接用length属性获取println("str.length => ${str.length}")// 2. 用count()函数获取println("str.count() => ${str.count()}")

La sortie est :

str.length => 16str.count() => 16

Ici, nous regardons count()le code source de la fonction

/** * Returns the length of this char sequence. * 其实也就是返回了length属性... */
@kotlin.internal.InlineOnly
public inline fun CharSequence.count(): Int 
{    
return length
}

5.2. Statistiques des caractères répétés

La fonction mentionnée ci-dessus count()consiste à renvoyer lengthla longueur de l'attribut pour obtenir la chaîne. En fait, le code source fournit également une count{}fonction d'ordre supérieur appelée , qui est utilisée pour compter le nombre de caractères répétés dans une chaîne.

/*  count{}函数源码    该函数接受一个`Boolean`类型的`Lambda`表达式。然后循环这个字符串,如果我的条件成立,则变量`count`自增。  循环完成之后返回重复的个数`count` */
public inline fun CharSequence.count(predicate: (Char) -> Boolean): Int 
{ 
var count = 0  
for (element in this)
if (predicate(element)) count++    
return count
}

Exemple:

val str = "kotlin very good"
val count = str.count
{ it == 'o' }
println("count : $count")

La sortie est :

count : 3

5.3, Chaîne de vérification

Dans le développement réel, en particulier dans Androidle développement, il est souvent rencontré lors de la vérification si le contenu de la zone de saisie est une chaîne vide. Dans Kotlin, comme dans , Javaplusieurs fonctions sont fournies pour gérer cette situation.

Les fonctions suivantes gèrent toutes les chaînes qui sont vides ou vides :

  • isEmpty(): Son code source est de juger s'il lengthest égal 0, s'il est égal 0, il reviendra true, sinon il reviendra false. Ne peut pas être utilisé directement avec des chaînes nullables
  • isNotEmpty()length: Son code source est de juger s'il est supérieur à 0, s'il est supérieur à , 0return true, sinon return false. Ne peut pas être utilisé directement avec des chaînes nullables
  • isNullOrEmpty(): Son code source est de juger si la chaîne est ou si nullelle est égale à .length0
  • isBlank(): Son code source est de juger s'il est lengthégal à 0, ou de juger si le nombre d' espaces qu'il contient est égal à celui en cours length. Ne peut pas être utilisé directement avec des chaînes nullables
  • isNotBlank(): Son code source est d' isBlank()inverser la fonction. Ne peut pas être utilisé directement avec des chaînes nullables
  • isNotOrBlank(): Son code source juge si la chaîne est null. ou appeler isBlank()la fonction

Exemple:

val str : String? = "kotlin"
/*   可以看出当str为可空变量的时候,isNullOrEmpty()和isNotOrBlank()可以不做直接调用而不做任何处理  ,而其他的函行 */
str?.isEmpty()          
falsestr?.isNotEmpty()        
truestr.isNullOrEmpty()       
falsestr?.isBlank()           
falsestr?.isNotBlank()      
truestr.isNullOrBlank()       //false

5.4, ​​​​concaténation de chaînes

Les liens de chaîne Javane peuvent être utilisés +que pour créer un lien, sauf bien StringBuilder、StringBuffersûr. En Kotlinplus d'utiliser des fonctions +, vous pouvez également utiliser plus()des fonctions. Il accepte tout type. plus()la fonction est une fonction surchargée d'opérateur.
Exemple d'explication :

val oldStr = "kotlin"
println(oldStr.plus(" very good"))
println(oldStr + " very good")

La sortie est :

kotlin very goodkotlin very good

5.5, inversion de chaîne

Comme les tableaux, les chaînes peuvent avoir leurs éléments inversés. Utilisez simplement reversed()la fonction directement.

exemple:

val str = "kotlin"println("字符串反转:${str.reversed()}")

Résultat de sortie :

字符串反转:niltok

5.6. Déterminer le début et la fin d'une chaîne

5.6.1、 commencePar()

Fonction : Pour juger si sa chaîne commence par un certain caractère ou une chaîne.

  • char: caractère de départ
  • prefix: chaîne de départ
  • ignoreCase: s'il faut appeler Javacette fonction dans. La valeur par défaut estfalse
  • startIndex: la position de départ

exemple:

val str = "kotlin"    
println(str.startsWith('k'))         // 是否有字符`k`起始   
println(str.startsWith("Kot"))       // 是否由字符串`kot`起始  
println(str.startsWith("lin",3))     // 当起始位置为3时,是否由字符串`lin`起始

La sortie est :

truetruetrue

5.6.2、se termine par()

Fonction : Pour juger si la chaîne se termine par un certain caractère ou une chaîne.

  • char: caractère de fin
  • suffix: chaîne de fin
  • ignoreCase: s'il faut appeler Javacette fonction dans. La valeur par défaut estfalse

exemple:

val str = "kotlin"println(str.endsWith("lin"))  // 是否由字符串`lin`结尾
println(str.endsWith('n'))    // 是否由字符`n`结尾复制代码

La sortie est :

truetrue

Six, extension Kotlin

6.1. La recherche de caractères est implémentée par défaut

object StringUtil { 
 fun lettersCount(str: String): Int { 
 var count = 0 
 for (char in str) { 
 if (char.isLetter()) { 
 count++ 
 } 
 } 
 return count 
 } 
}

 6.2. Implémentation à l'aide de l'extension kotlin

fun String.lettersCount(): Int { 
 var count = 0 
 for (char in this) { 
 if (char.isLetter()) { 
 count++ 
 } 
 } 
 return count 
} 

6.3. Appel 

val count = "ABC123xyz!@#".lettersCount() 

 

7. Résumé

Dans le développement réel, il existe de nombreuses situations dans lesquelles les chaînes sont traitées et utilisées. En particulier le traitement de vérification, le remplacement, la segmentation et l'interception des chaînes. C'est pourquoi j'ai trié ces points de connaissance. Ces points de connaissance sont très basiques, mais ils sont aussi très couramment utilisés. Si vous avez de l'expérience en programmation, vous devez consolider les connaissances de base des chaînes.

Je suppose que tu aimes

Origine blog.csdn.net/qq_41264674/article/details/130107826
conseillé
Classement