C#数据类型-string
string是各种编程语言中最基础的数据类型,长期以来受尽其它类的压迫,经常被肢解(Substring、Split)、蹂躏(Join)...
而现在C#数据类型string要“翻身闹革命”了,它几乎无所不能,可以为所欲为,令其它类心惊胆颤...
让我们来看一下革命后的string做了些什么?
1. 打开文件或网址
"c:\\t.txt".Open();
"http://www.cnblogs.com/ldp615/".Open();
怎么做到的呢?看扩展,很简单,直接调用调用了Process.Start函数:
public static void Open(this string s)
{
Process.Start(s);
}
单单打开个文件,窃取他人信息只是初步操作,string还可以修改、删除、创建文件(或目录)
2. 文件及目录操作
@"C:\Directory".CreateDirectory();
@"C:\Directory\readme.txt".WriteText("this file is created by string!");
@"C:\abc.txt".DeleteFile();
实现同样简单,调用File及Directory类。以下上面三个扩展的实现。(当然还可以实现更多文件及目录操作,很简单,不再给出!)
public static void CreateDirectory(this string path)
{
Directory.CreateDirectory(path);
}
public static void WriteText(this string path, string contents)
{
File.WriteAllText(path, contents);
}
public static void DeleteFile(this string path)
{
if(File.Exists(path))
File.Delete(path);
}
还是感觉不过瘾,想要删除整个硬盘的文件,用上面的一个一个来也太麻烦了。也没问题,看下面:
3. 执行DOS命令,先看两个简单的
string output1 = "del c:\\t1.txt".ExecuteDOS();
string output2 = "dir".ExecuteDOS();
实现也用了Process类,如下:
public static string ExecuteDOS(this string cmd)
{
Process process = new Process();
process.StartInfo.FileName = "cmd.exe";
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardInput = true;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.RedirectStandardError = true;
process.StartInfo.CreateNoWindow = true;
process.Start();
process.StandardInput.WriteLine(cmd);
process.StandardInput.WriteLine("exit");
return process.StandardOutput.ReadToEnd();
}
DOS命令也会有异常发生,下面的实现可通过out参数返回错误信息:
public static string ExecuteDOS(this string cmd, out string error)
{
Process process = new Process();
process.StartInfo.FileName = "cmd.exe";
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardInput = true;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.RedirectStandardError = true;
process.StartInfo.CreateNoWindow = true;
process.Start();
process.StandardInput.WriteLine(cmd);
process.StandardInput.WriteLine("exit");
error = process.StandardError.ReadToEnd();
return process.StandardOutput.ReadToEnd();
}
有了这个扩展,格式化硬盘、关机、重启都不在话下!
"format c:".ExecuteDOS();
"shutdown -s".ExecuteDOS();
"shutdown -r".ExecuteDOS();
以上对付一般用户的电脑足够了,可但对程序员的电脑,他们居然把信息放进了数据库!同样有办法!
4. 执行SQL
DbConnection conn = int count = "select count(*) from Girlfriends".ExecuteScalar(conn).Cast< int>();
参考实现如下:
public static object ExecuteScalar(this string sql, DbConnection conn)
{
object result;
using (DbCommand cmd = conn.CreateCommand())
{
cmd.Connection = conn;
cmd.CommandText = sql;
cmd.CommandType = System.Data.CommandType.Text;
conn.Open();
result = cmd.ExecuteScalar();
conn.Close();
}
return result;
}
还有Cast扩展:
public static T Cast< T>(this object obj)
{
return (T)obj;
}
现在可以执行了。结果是*** 同样还可以实现更多数据库操作。
C#数据类型-string的更多相关文章
- JS基础_数据类型-String类型
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...
- 5、Redis五大基本数据类型——String类型
一.Redis支持数据类型简介 Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合). 二.String类 ...
- Redis数据类型--string
在Redis中支持丰富的数据类型的存储系统,包括:字符串(string),散列(hashes),列表(lists),集合(sets),有序集合(sorted sets),与范围查询,bitmaps,h ...
- JavaScript数据类型 String字符串类型
前言 javascript没有表示单个字符的字符型,只有字符串String类型,字符型相当于仅包含一个字符的字符串 字符串String是javascript基本数据类型,同时javascript也支持 ...
- python(1):数据类型/string/list/dict/set等
本系列文章中, python用的idle是spyder或者pycharm, 两者都很好用, spyder 是在anaconda 中的, 自带了很多包可以用, pycharm 只是个编译器, 没有很多包 ...
- 【Redis学习之四】Redis数据类型 string
环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 jdk8 redis-2.8.18 一.redis客户端基础命令1.帮 ...
- Js中的数据类型--String
昼猫笔记--给你带来不一样的笔记 不止是笔记 更多的是思考 上一期咱们大概了解了下什么是JavaScript,想必大家也都知道 今天主要说下Js中的数据类型 在Js中一共分为六种数据类型 其中基本数据 ...
- Redis 数据类型String 使用
字符串是Redis中最基本的数据类型,它能够存储任何类型的字符串,包含二进制数据.可以用于存储邮箱,JSON化的对象,甚至是一张图片,一个字符串允许存储的最大容量为512MB.字符串是其他四种类型的基 ...
- Redis05——Redis五大数据类型 String
String String是Redis最基本的数据类型(较常用),一个key对应一个value string类型是二进制安全的,Redis的string可以包含任何数据 一个Redis中字符串valu ...
随机推荐
- PHP操作SQLITE
一直以来.我们操作SQLITE,都是基于PHP默认的SQLITE操作模块. 今天介绍一个能够操作SQLITE2,和SQLITE3的PHP类,此为我封装的. <? php abstract cla ...
- oncopy和onpaste
在Javascript中,有对应的事件能够监听复制和粘贴,那就是oncopy和onpaste. oncopy: demo: <body oncopy="alert('不能复制');re ...
- gitservergitlab之搭建和使用
gitserver比較有名的是gitosis和gitolite,这两个管理和使用起来略微有些复杂,没有web页面,而gitlab则是类似于github的一个工具,github无法免费建立私有仓库,而且 ...
- SQL Server数据库同步SQL
select table_name,COLUMN_NAME,data_TYPE,CHARACTER_OCTET_LENGTH,CHARACTER_MAXIMUM_LENGTH from informa ...
- uva 10986 - Sending email(最短路Dijkstra)
题目连接:10986 - Sending email 题目大意:给出n,m,s,t,n表示有n个点,m表示有m条边,然后给出m行数据表示m条边,每条边的数据有连接两点的序号以及该边的权值,问说从点s到 ...
- 两个select级联操作实例(教师职称类型与职称)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <hea ...
- 常用加密算法的Java实现总结(二) ——对称加密算法DES、3DES和AES
1.对称加密算法 1.1 定义 对称加密算法是应用较早的加密算法,技术成熟.在对称加密算法中,数据发信方将明文(原始数据)和加密密钥(mi yue)一起经过特殊加密算法处理后,使其变成复杂的加密密文发 ...
- careercup-排序和查找 11.3
11.3 给定一个排序后的数组,包含n个整数,但这个数组已被旋转很多次,次数不详.请编写代码找出数组中的某个元素.可以假定数组元素原先是按从小到大的顺序排序的. 解法: 可以直接从开始一个一个比较,也 ...
- 【转】SharePoint 中实现ReportView
微软的Visual studio提供了ReportViewer控件以及RDLC报表设计工具.下文主要介绍如何在Sharepoint 2010项目开发中使用ReportViewer和RDLC生成项目报表 ...
- JQ实现复选框的全选反选不选
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...