deyanivanov966

Exercise 2 25.02.2022-Форма за контакт Стрингове МОЙ КОД

Mar 10th, 2022 (edited)
491
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Kotlin 10.10 KB | None | 0 0
  1. package com.example.exercise2nativeapps
  2.  
  3. import android.graphics.Color
  4. import androidx.appcompat.app.AppCompatActivity
  5. import android.os.Bundle
  6. import android.text.TextUtils
  7. import android.view.View
  8. import android.widget.CheckBox
  9. import android.widget.EditText
  10. import android.widget.TextView
  11. import android.widget.Toast
  12.  
  13. class MainActivity : AppCompatActivity() {
  14.     override fun onCreate(savedInstanceState: Bundle?) {
  15.         super.onCreate(savedInstanceState)
  16.         setContentView(R.layout.activity_main)
  17.         //test_string()
  18.     }
  19.  
  20.     fun Proverka_Ime():Boolean      /*Функция за проверка на името с извеждаща булева променлива*/
  21.     {
  22.         val ime=findViewById<EditText>(R.id.editTextTextPersonName2).text.toString().uppercase()      /*Функция за проверка на името. Вземаме въведеното съдържание в TextPersonName*/
  23.  
  24.         if( ime.isEmpty()) {   /*Първа проверка, ако е празно полето за Име*/
  25.             Toast.makeText(this, "Въведете три имена", Toast.LENGTH_SHORT).show()      /*Извеждане на съобщение*/
  26.             return false      /*Резултат след натискане на бутона Провери, чекбокса на име не е включен*/
  27.         }
  28.         if( ime.matches("[A-Z -]+".toRegex())==false )      /*Маска-Втора проверка, дали съдържа само букви(^--uppercase за малки, големи) & интервал & тире*/
  29.         {
  30.             Toast.makeText(this, "Използвайте само букви", Toast.LENGTH_SHORT).show()      /*Извеждане на съобщение*/
  31.             return false
  32.         }
  33.         //val sp1=ime.indexOf(' ')      /*Ако имаме първи интервал, това означава, че sp1 ще имаме число различно от -1*/
  34.         //val sp2=ime.indexOf(' ', sp1+1)      /*Ако имаме втори интервал, той започва да търси след първи*/
  35.         val imena=ime.split(' ')
  36.  
  37.         //if ( sp2==-1){      /*Трета проверка-дали имаме два Space-а*/
  38.         if ( imena.size!=3 ) {
  39.             Toast.makeText(this, "Въведете три имена", Toast.LENGTH_SHORT).show()      /*Извеждане на съобщение*/
  40.             return false
  41.         } else {
  42.             val tv2=findViewById<TextView>(R.id.imena)
  43.             tv2.text="Име:"+imena[0]+" Презиме:"+imena[1]+" Фамилия:"+imena[2]
  44.         }
  45.         return true      /*Връща резултат true, независимо от написаното в текстовите кутии*/
  46.     }
  47.  
  48.     fun Proverka_Nomer():Boolean      /*Функция за проверка на номера с извеждаща булева променлива*/
  49.     {
  50.         val nomer=findViewById<EditText>(R.id.editTextPhone).text.toString()      /*Функция за проверка дали са въведени числа в полето*/
  51.  
  52.         if ( nomer.length==0) {      /*Първа проверка за дължината на номера и дали има нещо въведено.Ако е 0 -няма нищо въведено*/
  53.             Toast.makeText(this, "Липсва въведен номер", Toast.LENGTH_SHORT).show()      /*Извеждане на съобщение*/
  54.             return false
  55.         }
  56.         if ( nomer.matches("[0-9]+".toRegex())==false) {      /*Втора проверка да се използват само цифри от 0 до 9*/
  57.             Toast.makeText(this, "Използвайте само цифри", Toast.LENGTH_SHORT).show()      /*Извеждане на съобщение*/
  58.             return false
  59.         }
  60.         if ( nomer.length!=10 || nomer.startsWith("08")==false) {      /*Трета проверка-броят на цифрите да е до 10 или номера да започва с 08*/
  61.                 Toast.makeText(this, "Непълен номер", Toast.LENGTH_SHORT).show()      /*Извеждане на съобщение*/
  62.                 return false
  63.         }
  64.         return true
  65.     }
  66.     fun String.isEmailValid(): Boolean {      /*Функция проверяваща автоматично имейла с извеждаща булева променлива*/
  67.         return !TextUtils.isEmpty(this) && android.util.Patterns.EMAIL_ADDRESS.matcher(this).matches()
  68.     }
  69.  
  70.     fun Proverka_Email():Boolean      /*Функция за проверка на имейла с извеждаща булева променлива*/
  71.     {
  72.         val email=findViewById<EditText>(R.id.editTextTextEmailAddress).text.toString()      /*Функция за проверка дали са въведени числа в полето*/
  73.  
  74.         /*if( email =="") {      /*Първа проверка-дали е празен стринг*/
  75.             Toast.makeText(this, "Липсва въведен имейл", Toast.LENGTH_SHORT).show()      /*Извеждане на съобщение*/
  76.             return false
  77.         }
  78.         if ( email.indexOfAny(charArrayOf('!','#','$','%','?',' ','=','*'))>=0 ) {      /*Втора проверка дали са въведени некоректни символи. Ако срещне някой от тези символи, ще ни върне стойност >=0*/
  79.             Toast.makeText(this, "Некоректни символи", Toast.LENGTH_SHORT).show()      /*Извеждане на съобщение*/
  80.             return false
  81.         }
  82.  
  83.         val at=email.indexOf('@')      /*Функция за проверка дали е въведен символа '@' */
  84.         val at2=email.indexOf('@', at+1)      /*Функция за проверка дали след първят въведен символа '@' има друг такъв */
  85.         val dot=email.indexOf('.', at+1)      /*Функция за проверка дали е въведен символа '.' и дали го има след символа '@' */
  86.         val lastdot=email.lastIndexOf('.')      /*Функция за проверка дали последният символе е '.' */
  87.         val many=email.indexOf("..")      /*Функция за проверка дали някъде има два символа '.' (точки) */
  88.  
  89.         if( at==-1 || dot==-1 || at2>0 || lastdot==email.length-1 || many>=0) {      /*Първа проверка- at==-1 или dot==-1 значи липсва символа '@' или '.' ; дали at2 e повече от 0 както и дали '.' е последен символ; дали има два пъти точка */
  90.             Toast.makeText(this, "Некоректен имейл", Toast.LENGTH_SHORT).show()      /*Извеждане на съобщение*/
  91.             return false
  92.         }
  93.         return true */
  94.         if (email.isEmailValid() ) return true
  95.         else {
  96.             Toast.makeText(this, "Некоректен имейл", Toast.LENGTH_SHORT).show()      /*Извеждане на съобщение*/
  97.             return false
  98.         }
  99.     }
  100.  
  101.     fun btn_check(view:View)      /*Функция за проверка на бутона с извеждащ резултат от checkbox*/
  102.     {
  103.         val chk1=findViewById<CheckBox>(R.id.checkBox)      /*Дефинираме променлива, която проверява съдържанието на чекбокса*/
  104.         val chk2=findViewById<CheckBox>(R.id.checkBox2)
  105.         val chk3=findViewById<CheckBox>(R.id.checkBox3)
  106.         val tv=findViewById<TextView>(R.id.lbl)             /*Връзка с TextView*/
  107.         chk1.isChecked=Proverka_Ime()
  108.         chk2.isChecked=Proverka_Nomer()
  109.         chk3.isChecked=Proverka_Email()
  110.         if (chk1.isChecked && chk2.isChecked && chk3.isChecked ) {      /*В лейбъла ако трите полета са чекнати извеждаме:*/
  111.             tv.text="Ok"      /*извеждаме: Ок*/
  112.             tv.setBackgroundColor(Color.GREEN)      /*Оцветяваме надписа в Зелено*/
  113.         } else
  114.         {
  115.             tv.text="Има непопълнени полета"      /*В лейбъла ако трите полета НЕ са чекнати извеждаме:Има непопълнени полета*/
  116.             tv.setBackgroundColor(Color.RED)      /*Оцветяваме надписа в Червено*/
  117.         }
  118.     }
  119.  
  120.  
  121.     fun test_string()
  122.     {
  123.         val tv=findViewById<TextView>(R.id.lbl)     /*Дефиниране на променлива с val(в последствие не можем да ги променим като съдържание) от тип tv. Връзка с lbl (id)*/
  124.         val tmp="Здравейте"      /*Променлива изкарваща в TV View текста "Здравейте"*/
  125.         var rez=""      /*Дефиниране на променлива с var(в последствие можем да ги променим като съдържание) от тип rez(резултат) с празен стринг*/
  126.  
  127.  
  128.         //1      /*-ви вариант взима стринга и с forEach(автоматично дава it: от тип Char->променливата, която ще дава последователно символите от tmp)*/
  129.         /*   tmp.forEach {
  130.              rez=rez+it+" "
  131.         }   */
  132.  
  133.  
  134.         //2      /*-ри вариант със същият резултат като 1-ви*/
  135.         /*   for ( a in 0..tmp.length-1)    /*Дефиниране на променливата а, изменяща се от 0 до дължината на стринга length*/
  136.                //rez=rez+a.toString()+" "    /*Извеждане на индекси, не на букви*/
  137.                 rez=rez+tmp[a]+" "   */
  138.  
  139.  
  140.         //3      /*-ти вариант със същият резултат като 1-ви*/
  141.         for(ch in tmp)
  142.             rez=rez+ch+" "
  143.  
  144.         tv.text=rez
  145.     }
  146. }
Add Comment
Please, Sign In to add comment