Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.example.exercise2nativeapps
- import android.graphics.Color
- import androidx.appcompat.app.AppCompatActivity
- import android.os.Bundle
- import android.text.TextUtils
- import android.view.View
- import android.widget.CheckBox
- import android.widget.EditText
- import android.widget.TextView
- import android.widget.Toast
- class MainActivity : AppCompatActivity() {
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- setContentView(R.layout.activity_main)
- //test_string()
- }
- fun Proverka_Ime():Boolean /*Функция за проверка на името с извеждаща булева променлива*/
- {
- val ime=findViewById<EditText>(R.id.editTextTextPersonName2).text.toString().uppercase() /*Функция за проверка на името. Вземаме въведеното съдържание в TextPersonName*/
- if( ime.isEmpty()) { /*Първа проверка, ако е празно полето за Име*/
- Toast.makeText(this, "Въведете три имена", Toast.LENGTH_SHORT).show() /*Извеждане на съобщение*/
- return false /*Резултат след натискане на бутона Провери, чекбокса на име не е включен*/
- }
- if( ime.matches("[A-Z -]+".toRegex())==false ) /*Маска-Втора проверка, дали съдържа само букви(^--uppercase за малки, големи) & интервал & тире*/
- {
- Toast.makeText(this, "Използвайте само букви", Toast.LENGTH_SHORT).show() /*Извеждане на съобщение*/
- return false
- }
- //val sp1=ime.indexOf(' ') /*Ако имаме първи интервал, това означава, че sp1 ще имаме число различно от -1*/
- //val sp2=ime.indexOf(' ', sp1+1) /*Ако имаме втори интервал, той започва да търси след първи*/
- val imena=ime.split(' ')
- //if ( sp2==-1){ /*Трета проверка-дали имаме два Space-а*/
- if ( imena.size!=3 ) {
- Toast.makeText(this, "Въведете три имена", Toast.LENGTH_SHORT).show() /*Извеждане на съобщение*/
- return false
- } else {
- val tv2=findViewById<TextView>(R.id.imena)
- tv2.text="Име:"+imena[0]+" Презиме:"+imena[1]+" Фамилия:"+imena[2]
- }
- return true /*Връща резултат true, независимо от написаното в текстовите кутии*/
- }
- fun Proverka_Nomer():Boolean /*Функция за проверка на номера с извеждаща булева променлива*/
- {
- val nomer=findViewById<EditText>(R.id.editTextPhone).text.toString() /*Функция за проверка дали са въведени числа в полето*/
- if ( nomer.length==0) { /*Първа проверка за дължината на номера и дали има нещо въведено.Ако е 0 -няма нищо въведено*/
- Toast.makeText(this, "Липсва въведен номер", Toast.LENGTH_SHORT).show() /*Извеждане на съобщение*/
- return false
- }
- if ( nomer.matches("[0-9]+".toRegex())==false) { /*Втора проверка да се използват само цифри от 0 до 9*/
- Toast.makeText(this, "Използвайте само цифри", Toast.LENGTH_SHORT).show() /*Извеждане на съобщение*/
- return false
- }
- if ( nomer.length!=10 || nomer.startsWith("08")==false) { /*Трета проверка-броят на цифрите да е до 10 или номера да започва с 08*/
- Toast.makeText(this, "Непълен номер", Toast.LENGTH_SHORT).show() /*Извеждане на съобщение*/
- return false
- }
- return true
- }
- fun String.isEmailValid(): Boolean { /*Функция проверяваща автоматично имейла с извеждаща булева променлива*/
- return !TextUtils.isEmpty(this) && android.util.Patterns.EMAIL_ADDRESS.matcher(this).matches()
- }
- fun Proverka_Email():Boolean /*Функция за проверка на имейла с извеждаща булева променлива*/
- {
- val email=findViewById<EditText>(R.id.editTextTextEmailAddress).text.toString() /*Функция за проверка дали са въведени числа в полето*/
- /*if( email =="") { /*Първа проверка-дали е празен стринг*/
- Toast.makeText(this, "Липсва въведен имейл", Toast.LENGTH_SHORT).show() /*Извеждане на съобщение*/
- return false
- }
- if ( email.indexOfAny(charArrayOf('!','#','$','%','?',' ','=','*'))>=0 ) { /*Втора проверка дали са въведени некоректни символи. Ако срещне някой от тези символи, ще ни върне стойност >=0*/
- Toast.makeText(this, "Некоректни символи", Toast.LENGTH_SHORT).show() /*Извеждане на съобщение*/
- return false
- }
- val at=email.indexOf('@') /*Функция за проверка дали е въведен символа '@' */
- val at2=email.indexOf('@', at+1) /*Функция за проверка дали след първят въведен символа '@' има друг такъв */
- val dot=email.indexOf('.', at+1) /*Функция за проверка дали е въведен символа '.' и дали го има след символа '@' */
- val lastdot=email.lastIndexOf('.') /*Функция за проверка дали последният символе е '.' */
- val many=email.indexOf("..") /*Функция за проверка дали някъде има два символа '.' (точки) */
- if( at==-1 || dot==-1 || at2>0 || lastdot==email.length-1 || many>=0) { /*Първа проверка- at==-1 или dot==-1 значи липсва символа '@' или '.' ; дали at2 e повече от 0 както и дали '.' е последен символ; дали има два пъти точка */
- Toast.makeText(this, "Некоректен имейл", Toast.LENGTH_SHORT).show() /*Извеждане на съобщение*/
- return false
- }
- return true */
- if (email.isEmailValid() ) return true
- else {
- Toast.makeText(this, "Некоректен имейл", Toast.LENGTH_SHORT).show() /*Извеждане на съобщение*/
- return false
- }
- }
- fun btn_check(view:View) /*Функция за проверка на бутона с извеждащ резултат от checkbox*/
- {
- val chk1=findViewById<CheckBox>(R.id.checkBox) /*Дефинираме променлива, която проверява съдържанието на чекбокса*/
- val chk2=findViewById<CheckBox>(R.id.checkBox2)
- val chk3=findViewById<CheckBox>(R.id.checkBox3)
- val tv=findViewById<TextView>(R.id.lbl) /*Връзка с TextView*/
- chk1.isChecked=Proverka_Ime()
- chk2.isChecked=Proverka_Nomer()
- chk3.isChecked=Proverka_Email()
- if (chk1.isChecked && chk2.isChecked && chk3.isChecked ) { /*В лейбъла ако трите полета са чекнати извеждаме:*/
- tv.text="Ok" /*извеждаме: Ок*/
- tv.setBackgroundColor(Color.GREEN) /*Оцветяваме надписа в Зелено*/
- } else
- {
- tv.text="Има непопълнени полета" /*В лейбъла ако трите полета НЕ са чекнати извеждаме:Има непопълнени полета*/
- tv.setBackgroundColor(Color.RED) /*Оцветяваме надписа в Червено*/
- }
- }
- fun test_string()
- {
- val tv=findViewById<TextView>(R.id.lbl) /*Дефиниране на променлива с val(в последствие не можем да ги променим като съдържание) от тип tv. Връзка с lbl (id)*/
- val tmp="Здравейте" /*Променлива изкарваща в TV View текста "Здравейте"*/
- var rez="" /*Дефиниране на променлива с var(в последствие можем да ги променим като съдържание) от тип rez(резултат) с празен стринг*/
- //1 /*-ви вариант взима стринга и с forEach(автоматично дава it: от тип Char->променливата, която ще дава последователно символите от tmp)*/
- /* tmp.forEach {
- rez=rez+it+" "
- } */
- //2 /*-ри вариант със същият резултат като 1-ви*/
- /* for ( a in 0..tmp.length-1) /*Дефиниране на променливата а, изменяща се от 0 до дължината на стринга length*/
- //rez=rez+a.toString()+" " /*Извеждане на индекси, не на букви*/
- rez=rez+tmp[a]+" " */
- //3 /*-ти вариант със същият резултат като 1-ви*/
- for(ch in tmp)
- rez=rez+ch+" "
- tv.text=rez
- }
- }
Add Comment
Please, Sign In to add comment