C#对字符串的常用处理总结C#控制台

news/2024/5/19 23:40:04 标签: 前端, javascript, c#, asp.net, .net, .netcore

目录

C#用空格分隔的字符串string转换成字符数组string[];字符串数组string[]转换成整型数组int[]

1、将用console.readline()获取的用空格分隔的string转换成string[]

2、将string[]转换成int[](c#3.0)

截取指定字符串

C#RichTextBox截断问题

C#正则验证邮箱

C #正则验证密码错误后循环输入

C#获取当前项目目录

C#在文本文件或csv文件中查找指定字符串

C#写入csv文件

c#截取两个指定字符串中间的字符串

C#在csv文件某行插入指定数据或重写数据

在.csv文件中指定字符串后插入

C#循环输出数组的内容for/foreach 规律输出数组第一行012(123) 第二行345(456)

序列化

c# DataGridView中,选中了多个行,如何获取选中的每一行的数据,或者每一行的索引C#中DataGridView实现多选和单选问题

End


C#用空格分隔的字符串string转换成字符数组string[];字符串数组string[]转换成整型数组int[]

1、将用console.readline()获取的用空格分隔的string转换成string[]

var str = Console.ReadLine();

var strArray=str.Split().ToArray();

2、将string[]转换成int[](c#3.0)

int[] intArray = Array.ConvertAll<string,int>(strArray,s=>int.Parse(s));

c#2.0

int[] intArray = Array.ConvertAll<string,int>(strArray,delegate(string s){return int.Parse(s);})

例题

转换前 循环获取输出,换成winform窗体或者一行输入,以空格分隔,string 转string【】然后i取值

int[] niupi = new int[10];

            int n, i, j, t;

            n = int.Parse(textBox2.Text);

            string sr = new Regex("[\\s]+").Replace(textBox3.Text, " ");

            var strArray = sr.Split().ToArray();

            for (i = 0; i <= n - 1; i++)

            {

              

                niupi[i] = int.Parse(strArray[i]);

               

            }

            for (i = 1; i < n; i++)

            {

                for (j = 0; j < n - i; j++)

                {

                    if (niupi[j] < niupi[j + 1])

                    {

                        t = niupi[j];

                        niupi[j] = niupi[j + 1];

                        niupi[j + 1] = t;

                    }

                }

            }

            for (i = 0; i < n; i++)

            {

                if (i < n - 1)

                    textBox1.Text += string.Format("{0} ", niupi[i]);

                else

                    textBox1.Text += string.Format("{0}", niupi[i]);

            }

截取指定字符串

     string s = "qwer[asdf]zxcv";

            int startOps = s.IndexOf("");

            Console.WriteLine(startOps);

            int endOps = s.IndexOf("]", startOps);

            string dataUnit = s.Substring(startOps, endOps - startOps + 1);

            Console.WriteLine(dataUnit);

C#RichTextBox截断问题

 

传入的richtextbox的tostring转换截断和text直接截断有差异,多出来system.form.richrextbox等值

                //截取题目 选项不要了

                //int startOps = rtb.ToString().IndexOf("");

                //int endOps = rtb.ToString().IndexOf("A", startOps);

                //string rtbT = rtb.ToString().Substring(startOps, endOps - startOps + 1); 

                int startOps = rtb.Text.IndexOf("");

                int endOps = rtb.Text.IndexOf("A", startOps);

                string rtbT = rtb.Text.Substring(startOps, endOps - startOps + 1);

                var want = rtb.Text.Substring(startOps, endOps - startOps + 1);

C#正则验证邮箱

            string pattern = @"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$@$!%*?&])[A-Za-z\d$@$!%*?&]{8,}";//至少8个字符,至少1个大写字母,1个小写字母,1个数字和1个特殊字符:

            bool result = false;

            if (!string.IsNullOrEmpty(ypwd.Trim()))

            {

                result = System.Text.RegularExpressions.Regex.IsMatch(ypwd, pattern);

                if (!result)

                {

                    Console.WriteLine("The supplied value is not a valid password");

                }

            }


C #正则验证密码错误后循环输入

string ypwd = Console.ReadLine();

            bool boolpwd = true;

            while (boolpwd)

            {

                Regex r = new Regex(@"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$@$!%*?&])[A-Za-z\d$@$!%*?&]{8,}");//至少8个字符,至少1个大写字母,1个小写字母,1个数字和1个特殊字符:

                if (r.IsMatch(ypwd))

                {

                    boolpwd = false;

                    break;

                }

                else

                {

                    boolpwd = true;

                    Console.WriteLine("The supplied value is not a valid password");

                }

                Console.Write("> ");

                ypwd = Console.ReadLine();

            }

C#获取当前项目目录

string path = "~/../../../../";//保存路径

 string fileName = path + "1.csv";//文件名

C#在文本文件或csv文件中查找指定字符串

using System.Text.RegularExpressions;
string str = System.IO.File.ReadAllText("c:/k.txt");
Regex reg = new Regex("B");
Match mat = reg.Match(str);
while(mat.Success)
{
MessageBox.Show(mat.Index.ToString());//
位置
mat = reg.Match(str, mat.Index+mat.Length);
}

  string str = System.IO.File.ReadAllText("~/../../../../1.csv");

                    Regex reg = new Regex(yemail);

                    Match mat = reg.Match(str);

                    if (mat.Success)

                    {

                        //Console.WriteLine(mat.Index.ToString());//位置 

                        Console.WriteLine("The supplied address is already in use.");

                        boolemail = true;

                        mat = reg.Match(str, mat.Index + mat.Length); //不知道干啥用

                    }

                    else

                    {

                        //Console.WriteLine("can't find the same emial");

                        boolemail = false;

                        break;

                    }

C#写入csv文件

   public static void WriteCsv(string result)

        {

            string path = "~/../../../../";//保存路径

            string fileName = path + "1.csv";//文件名

            string Datedate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");//年月日小时分钟秒

            if (!Directory.Exists(path))

            {

                Directory.CreateDirectory(path);

            }

            if (!File.Exists(fileName))

            {

                StreamWriter sw = new StreamWriter(fileName, true, Encoding.UTF8);

                sw.Close();

            }

            StreamWriter swl = new StreamWriter(fileName, true, Encoding.UTF8);

            string str = result+"\t\n";

            swl.Write(str);

            swl.Close(); 

        }

一行一个            WriteCsv("Client");

c#截取两个指定字符串中间的字符串

        public static string MidStrEx_New(string sourse, string startstr, string endstr)

        {

             Regex rg = new Regex("(?<=(" + startstr + "))[.\\s\\S]*?(?=(" + endstr + "))", RegexOptions.Multiline | RegexOptions.Singleline);

             return rg.Match(sourse).Value;

        }//c#截取两个指定字符串中间的字符串

  int i = str.IndexOf("\n") + 1;  //  int j = str.IndexOf("ef"); 

                        int j = mat.Index;

                        string sneed = str.Substring(i, j-i-2);

                        yname = sneed;

public static string MidStrEx(string sourse, string startstr, string endstr)

        {

            string result = string.Empty;

            int startindex, endindex;

            try

            {

                startindex = sourse.IndexOf(startstr);

                if (startindex == -1)

                    return result;

                string tmpstr = sourse.Substring(startindex + startstr.Length);

                endindex = tmpstr.IndexOf(endstr);

                if (endindex == -1)

                    return result;

                result = tmpstr.Remove(endindex);

            }

            catch (Exception ex)

            {

                Log.WriteLog("MidStrEx Err:" + ex.Message);

            }

            return result;

        }

C#在csv文件某行插入指定数据或重写数据

FileStream fs = new FileStream(@"demo.txt", FileMode.Open);==

    using (var fs = File.Create("demo.txt")) =

            {

                //初始化文件

                var sw = new StreamWriter(fs);

                var sr = new StreamReader(fs);

                sw.WriteLine("AAAAAA");

                sw.WriteLine("BB");

                sw.WriteLine("CCCC");

                sw.Flush();

                fs.Seek(0, SeekOrigin.Begin);

                //查找2个换行符位置

                long p1 = -1, p2 = -1;

                var last = 0;

                for (int i = 0; i < fs.Length; ++i)

                {

                    var c = fs.ReadByte();

                    if (last == '\r' && c == '\n')

                    {

                        if (p1 == -1) p1 = fs.Position;

                        else

                        {

                            p2 = fs.Position;

                            break;

                        }

                    }

                    last = c;

                }

                //第二个换行符之后的内容,如果是超大文件,分批缓存,避免内存占用过多

                var end = sr.ReadToEnd();

                //重新写入第一个换行符之后的内容

                fs.Seek(p2, SeekOrigin.Begin);

                sw.WriteLine("what is");

                sw.Write(end);

                sw.Close();

            }

在.csv文件中指定字符串后插入

  public static void WriteCsv2(string result)

        {

            string path = "~/../../../../";//保存路径

            string fileName = path + "1.csv";//文件名

            string Datedate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");//年月日小时分钟秒

            if (!Directory.Exists(path))

            {

                Directory.CreateDirectory(path);

            }

            if (!File.Exists(fileName))

            {

                StreamWriter sw2 = new StreamWriter(fileName, true, Encoding.UTF8);

                sw2.Close();

            }

            //初始化文件

            FileStream fs = new FileStream(@"~/../../../../1.csv", FileMode.Open);

            var sw = new StreamWriter(fs);

            var sr = new StreamReader(fs);

            sw.Flush(); 

            var end = sr.ReadToEnd();   //读取全文

            var a = end.IndexOf("Address"); //找到目标位置 应该是邮箱后面的address

            fs.Seek(a+1, SeekOrigin.Begin);//在目标位置偏移后写入

            sw.WriteLine("\t\n"+result);//换行写入

            var zend = end.Substring(a);

            sw.Write(zend);//追加偏移后的全文

            sw.Close();

}

C#循环输出数组的内容for/foreach 规律输出数组第一行012(123) 第二行345(456)

   var list1=nstr.Split("\t\n"); 

                    var list=nstr.Replace("Product\t\n", "").Split("\t\n");

                    var sindex = list1.Length / 4;

                    Console.WriteLine("item #\t Product name\t Description\t List price\t Bidder name\t Bildder emial\t Bid amt\t");

                    for (int i = 0; i < sindex; i++)

                    {

                        Console.WriteLine("{0}\t {1}\t\t {2}\t {3}", i+1,list[3*i],list[3 * i + 1],list[3 * i + 2]);

                    }

 

 

 

序列化

在这之前并不太了解C#的序列化,于是百度一下。

得一百度知道解答: c#中序列化是什么,怎么用,什么情况下用,不用有什么后果?

c#中序列化就是把一个对象保存到一个文件或数据库字段中去。

序列化用途:

1、在进程下次启动时读取上次保存的对象的信息

2、在不同的AppDomain或进程之间传递数据

3、在分布式应用系统中传递数据

常见的序列化的方法:

1、BinaryFormatter

2、SoapFormatter

3、XML序列化

用法:

  BinaryFormatter的用法大致如下: 

//BinaryFormatter将对象序列化到文件中

 List<string> inputList = new List<string>() { "str1","str2","str3"};

 using (FileStream fsWriter = new FileStream(@"tmp.dat",FileMode.Create,FileAccess.Write))

 {

       BinaryFormatter bf = new BinaryFormatter();

       //序列化

       bf.Serialize(fsWriter, inputList);

 }

 //BinaryFormatter将文件中的数据反序列化出来

 List<string> outputList = new List<string>();

 using (FileStream fsReader = new FileStream(@"tmp.dat",FileMode.Open,FileAccess.Read))

 {

       BinaryFormatter bf = new BinaryFormatter();

       //反序列化

       outputList = (List<string>)bf.Deserialize(fsReader);

 }

XML序列化的用法大致如下:

//xml序列化到tmp.xml文件中

List<string> inputList = new List<string>() { "str1","str2"};

using (FileStream fsWriter = new FileStream(@"tmp.xml",FileMode.Create,FileAccess.Write))

{

      XmlSerializer xs = new XmlSerializer(typeof(List<string>));

      xs.Serialize(fsWriter, inputList);

}

//从tmp.xml文件中反序列化出来

List<string> outputList = new List<string>();

using (FileStream fsReader = new FileStream(@"tmp.xml",FileMode.Open,FileAccess.Read))

{

     XmlSerializer xs = new XmlSerializer(typeof(List<string>));

     outputList = xs.Deserialize(fsReader) as List<string>;

}

总结:

两个的用法大致如下:

序列化:

  1.得到一个存储对象的类型

  2.创建一个写入文件流

  3.定义要序列化的类型

  4.调用序列化方法

反序列化:

  1.定义一个装载对象的类型

  2.创建一个读出文件流

  3.定义要反序列化的类型

  4.调用反序列化方法

BinaryFormatter类进行序列化和反序列化,以缩略型二进制格式写到一个文件中去,速度比较快,而且写入后的文件已二进制保存有一定的保密效果。标记为NonSerialized的其他所有成员都能序列化。

采用xml序列化的方式只能保存public的字段和可读写的属性,对于private等类型的字段不能进行序列化。

二进制序列化的优点:

  1. 所有的类成员(包括只读的)都可以被序列化;

  2. 性能非常好。

XML序列化的优点:

  1. 互操作性好;

  2. 不需要严格的二进制依赖;

  3. 可读性强

另外还受助于这片博文C# ArrayList用BinaryFormatter序列化和反序列化进行文件读写的一个简单例子_c# 实例 arraylist 反序列化_JohnZhang_的博客-CSDN博客

c# DataGridView中,选中了多个行,如何获取选中的每一行的数据,或者每一行的索引C#中DataGridView实现多选和单选问题

好像是这样的

foreach(DataGridViewRow row in DataGridView.SelectedRows)

{

MessageBox.Show(row.cell[1].Value.ToString());

}

SelectedRows就是包含了所有选中的行

End


http://www.niftyadmin.cn/n/1471560.html

相关文章

【2018百度之星资格赛】 A 问卷调查 - 位运算动规

题目地址&#xff1a;http://acm.hdu.edu.cn/showproblem.php?pid6344 参考博客&#xff1a;在此感谢http://www.cnblogs.com/LQLlulu/p/9419232.html博主&#xff0c;多谢指教&#xff0c;受益良多 Summarize&#xff1a; 1. 使用动态规划的方法&#xff0c;状态转移方程&…

java复制文件排除子文件_Java复制除某些内部文件之外的文件夹

这里建议的其他选项都很好,但另一种选择是将多个更简单的FileFilter嵌套在一起(当然,这可能是矫枉过正的&#xff01;)public class FailFastFileFilter implements FileFilter {protected final List children new ArrayList();public FailFastFileFilter(FileFilter... filt…

UVa-12558 Egyptian Fractions (HARD version)

谁能想到&#xff0c;int写成了long long int&#xff0c;居然报了TLE呢 1 #include <bits/stdc.h>2 #define _for(i,a,b) for(int i (a);i < (b);i )3 #define LL long long int4 using namespace std;5 6 LL maxd;7 LL ans[13939],v[13939];8 LL lim[9];9 10 LL g…

求最小公倍数利用数组java_菜鸟级求解:Java求1到20的最小公倍数

本帖最后由 朱荣宁. 于 2013-3-12 23:49 编辑这是一道编程题 :Java求1到20的最小公倍数这道题本身的算法思想我觉得并不难,我自己试着想了一种方法,算法思想是:用短除法&#xff0c;就是先把1-20的数一直除以质数2&#xff0c;直到所有的数都不能整除2为止&#xff0c;再除以3……

领扣(LeetCode)移动零 个人题解

给定一个数组 nums&#xff0c;编写一个函数将所有 0 移动到数组的末尾&#xff0c;同时保持非零元素的相对顺序。 示例: 输入: [0,1,0,3,12] 输出: [1,3,12,0,0] 说明: 必须在原数组上操作&#xff0c;不能拷贝额外的数组。尽量减少操作次数。比较暴力的做法&#xff0c;就是依…

leetcode题目汇总

73. Set Matrix Zeroes 矩阵赋零 91. Decode Ways 解码方法 227. Basic Calculator II 基本计算器之二转载于:https://www.cnblogs.com/gaofanshi/p/10068794.html

【蓝桥杯单片机12】实时时钟DS1302的基本操作

【蓝桥杯单片机12】实时时钟DS1302的基本操作 广东职业技术学院 欧浩源 实时时钟DS1302几乎是蓝桥杯“单片机设计与开发”每年必考的内容&#xff0c;虽然在竞赛现场有提供一个底层读写寄存器的库文件&#xff0c;但是作为备赛阶段&#xff0c;你应该搞清楚底层读写时序的代码实…

人物相关性分析Java_蓝桥杯javaB组--人物相关性分析

【问题描述】小明正在分析一本小说中的人物相关性。他想知道在小说中 Alice 和 Bob有多少次同时出现。更准确的说&#xff0c;小明定义 Alice 和 Bob“同时出现”的意思是&#xff1a;在小说文本中 Alice 和 Bob 之间不超过 K 个字符。例如以下文本&#xff1a;This is a story…