3.11课·········类

String类:
.Length 字符的长度

.Trim() 去掉开头以及结尾的空格
.TrimStart() 去掉字符串开头的空格
.TrimEnd() 去掉字符串后面的空格

.ToUpper() 全部大写
.ToLower() 全部小写

Substring(起始位置,截取长度)
Substring(起始位置) 只写起始位置,可以截取到尾
身份证截取生日:

 Console.Write("请输入身份证号:");
            string s = Console.ReadLine();
            if (s.Length == 18)
            {
                string y = s.Substring(6, 4);
                string m = s.Substring(10, 2);
                string d = s.Substring(12, 2);
            }
            else
            {
                Console.WriteLine("输入有误!");

            }
            Console.ReadLine();

IndexOf("字符串") 返回第一次出现此字符串的索引
LastIndexOf("字符串") 返回最后一次出现此字符串的索引

StartsWith("字符串") 是否以此字符串为开头,返回True或False
EndsWith("字符串") 是否以此字符串为结尾
Contains("字符串") 是否包含此字符串。返回True或者False

Replace("老字","新字") 将老字用新字替换

练习:判断邮箱格式是否正确
1.有且只能有一个@
2.不能以@开头
[email protected]之后至少有一个.

[email protected]和.不能靠在一起
5.不能以.结尾

            Console.Write("请输入您的邮箱号:");
            string mail = Console.ReadLine();
            bool a = mail.Contains("@");
            if (a == true)//首先确认包含@
            {
                int b = mail.IndexOf("@");//从前面数索引号
                int c = mail.LastIndexOf("@");//从后面数索引号
                if (b == c)//只有一个@
                {
                    if (b != 0)//不能以@开头
                    {
                        string mail1 = mail.Substring(b);//从@开始后面的索引号
                        if (mail1.Contains("."))//@后至少有一个.
                        {
                            int d = mail1.IndexOf(".");//从前面数.的索引号
                            if (d != 1)//@和.不在一起
                            {
                                int e = mail1.LastIndexOf(".");//从后面数.的索引号
                                if (e != mail1.Length - 1)//长度从1开始,而索引从0开始,所以长度需-1//不以.结尾
                                {
                                    Console.WriteLine("您的邮箱格式输入正确!");
                                }
                                else
                                {
                                    Console.WriteLine("不能以.结尾");
                                }
                            }
                            else
                            {
                                Console.WriteLine("@不能和.在一起");
                            }
                        }
                        else
                        {
                            Console.WriteLine("@后至少有一个.");
                        }
                    }
                    else
                    {
                        Console.WriteLine("不能以@开头!");
                    }
                }
                else
                {
                    Console.WriteLine("邮箱号只能有一个@!");
                }
            }
            else
            {
                Console.WriteLine("邮箱号必须包含@!");
            }
            Console.ReadLine();

随机数类`````Random
Random ran = new Random();//初始化
int a = ran.Next(10);//10以内的随机整数
int b =ran.Next(s.Length);//小于字符串s长度的随机一个数

随机出验证码,对照输入,判断正误!若输入错误,请重新输入:

  string s = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQUVWXUZ0123456789";//长度为62,索引0~61
            Random ran = new Random();
            for (; ; )
            {
                string biao = "";
                for (int i = 1; i <= 4; i++)//取四个字符
                {
                    biao += s.Substring(ran.Next(s.Length), 1);//从小于字符串s长度的随机一个位置截取一个字符//biao是string类型,+表示拼接
                }
                Console.WriteLine(biao);
                Console.Write("请输入验证码:");
                string shu = Console.ReadLine();
                if (shu.ToLower() == biao.ToLower())
                {
                    Console.WriteLine("输入正确!");
                    break;
                }
                else
                {
                    Console.Clear();//清屏,将屏幕上的信息都清掉
                    Console.WriteLine("输入错误!");
                }
            }
            Console.ReadLine();
时间: 2025-01-08 15:14:27

3.11课·········类的相关文章

安卓学习第11课——AutoCompleteTextView

...在百度上搜了这么一段.理解了ArrayAdapter的三个参数的用途 1. 这个小例子是要显示一个数组,我们就用ArrayAdapter,数组适配器,数据的数据类型<>是String类型的,数据的数据类型还可以是其他的包括对象类型的 2. ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(ArrayListDemo.this, android.R.layout.simple_list_item

第11课完成:“主主同步”的视频,浪费的时间太不值得

今天晚饭前,终于完成第11课的内容. 其实,如果不是"主主同步"这节视频耽误太多的时间,我是可以做到本周一就结束这1节的.而且,在我初看"L11-17-MySQL主主同步理论介绍及手把手脚本实操讲解w"这节视频时,也浏览到视频的后三分之一.知道oldboy讲到最后,虽然把"主主同步"搭建成功,但是,最后他如何实现的步骤,在这节视频里并没有录制上. 只恨自己的"完美主义"心态,明明知道这节视频里,最关键的部分没有录制上,还是坚持

node.js第11课(HTTPclient)

 一.http模块提供了两个函数http.request和http.get,功能是作为client向HTTPserver发起请求. Ext.Ajax.request({},function(response)) 1.http.request(options,callback)发起HTTP请求,接受两个參数,option是一个类似关联数组的对象, 表示请求的參数,callback是请求的回调函数,option经常使用的參数例如以下 host:请求站点的域名或IP地址 port:请求站点的端口,

C++--第22课 - 类模板 - 下

第22课 - 类模板 - 下 1. 类模板的局部特化 类模板可以定义多个类型参数 #include <cstdlib> #include <iostream> using namespace std; template<typename T1, typename T2> class Test { public: void add(T1 a, T2 b) { cout<<(a + b)<<endl; } }; int main(int argc,

第二课 类的定义与使用

使用类之前使用关键字type来声明一个类如 type A = class i,j,k:integer; procedure setA(a,b,c:integer); function gerA():integer; end; 这里已经定义了一个类,现在我们来使用类 在使用类之前,我们先必须给下面2行 procedure setA(a,b,c:integer); function gerA():integer; 代码实现如下功能: function A.getA(): Integer;begin

C++11模板类使用心得

1.推荐使用std::shared_ptr<TaskT>代替指针TaskT*使用,shared_ptr是一种智能指针,能自主销毁释放内存,在c++11中被引入,在多线程编程中有很大的用处,它可以统计有多少指针指向同一个对象.该类被包含在<memory>中. 2.在模板类中要使用某一容器的iterator类型,需要在该iterator类型前加上typename,才能进行编译,原因不明. 3.容器中的iterator类型只要不被删除,iterator所指向的内容是恒定的,利用这一点可以

第15课 类与封装的概念

类的组合: 类的封装: 类封装的基本概念: C++中的类的封装: 示例: 1 #include <stdio.h> 2 3 #include <stdio.h> 4 5 struct Biology 6 { 7 bool living; 8 }; 9 10 struct Animal : Biology 11 { 12 bool movable; 13 14 void findFood() 15 { 16 } 17 }; 18 19 struct Plant : Biology 2

第29课 类中的函数重载

函数重载回顾: 类中的重载: 万变不离其宗: 类中的普通成员函数和静态成员函数也够成重载. 示例程序: 1 #include <stdio.h> 2 3 class Test 4 { 5 int i; 6 public: 7 Test() 8 { 9 printf("Test::Test()\n"); 10 this->i = 0; 11 } 12 13 Test(int i) 14 { 15 printf("Test::Test(int i)\n"

第59课 类模板深度剖析

多参数类模板: 特化: 上图特化的意义是将原来接收任意两个类型参数的模板特化为只能接收一种类型的两个参数. 这意味着如果定义类时我们给的两个参数是同种类型的,则编译器优先使用右边的这种模板实现. 一个类模板实际分开实现为两个部分,编译器根据具体的参数选择其中的一个模板. 编译器会认为上图中的两个Test模板是同一个,具体实现时,如参数类型不同则选择左边的实现,参数类型相同时选择右边的实现. 完全特化就是我们根本就不需要泛指参数了,直接指定原先的泛指类型全部为int,完全特化意味着特化之后的模板里