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的更多相关文章

  1. JS基础_数据类型-String类型

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  2. 5、Redis五大基本数据类型——String类型

    一.Redis支持数据类型简介 Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合). 二.String类 ...

  3. Redis数据类型--string

    在Redis中支持丰富的数据类型的存储系统,包括:字符串(string),散列(hashes),列表(lists),集合(sets),有序集合(sorted sets),与范围查询,bitmaps,h ...

  4. JavaScript数据类型 String字符串类型

    前言 javascript没有表示单个字符的字符型,只有字符串String类型,字符型相当于仅包含一个字符的字符串 字符串String是javascript基本数据类型,同时javascript也支持 ...

  5. python(1):数据类型/string/list/dict/set等

    本系列文章中, python用的idle是spyder或者pycharm, 两者都很好用, spyder 是在anaconda 中的, 自带了很多包可以用, pycharm 只是个编译器, 没有很多包 ...

  6. 【Redis学习之四】Redis数据类型 string

    环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 jdk8 redis-2.8.18 一.redis客户端基础命令1.帮 ...

  7. Js中的数据类型--String

    昼猫笔记--给你带来不一样的笔记 不止是笔记 更多的是思考 上一期咱们大概了解了下什么是JavaScript,想必大家也都知道 今天主要说下Js中的数据类型 在Js中一共分为六种数据类型 其中基本数据 ...

  8. Redis 数据类型String 使用

    字符串是Redis中最基本的数据类型,它能够存储任何类型的字符串,包含二进制数据.可以用于存储邮箱,JSON化的对象,甚至是一张图片,一个字符串允许存储的最大容量为512MB.字符串是其他四种类型的基 ...

  9. Redis05——Redis五大数据类型 String

    String String是Redis最基本的数据类型(较常用),一个key对应一个value string类型是二进制安全的,Redis的string可以包含任何数据 一个Redis中字符串valu ...

随机推荐

  1. PHP操作SQLITE

    一直以来.我们操作SQLITE,都是基于PHP默认的SQLITE操作模块. 今天介绍一个能够操作SQLITE2,和SQLITE3的PHP类,此为我封装的. <? php abstract cla ...

  2. oncopy和onpaste

    在Javascript中,有对应的事件能够监听复制和粘贴,那就是oncopy和onpaste. oncopy: demo: <body oncopy="alert('不能复制');re ...

  3. gitservergitlab之搭建和使用

    gitserver比較有名的是gitosis和gitolite,这两个管理和使用起来略微有些复杂,没有web页面,而gitlab则是类似于github的一个工具,github无法免费建立私有仓库,而且 ...

  4. SQL Server数据库同步SQL

    select table_name,COLUMN_NAME,data_TYPE,CHARACTER_OCTET_LENGTH,CHARACTER_MAXIMUM_LENGTH from informa ...

  5. uva 10986 - Sending email(最短路Dijkstra)

    题目连接:10986 - Sending email 题目大意:给出n,m,s,t,n表示有n个点,m表示有m条边,然后给出m行数据表示m条边,每条边的数据有连接两点的序号以及该边的权值,问说从点s到 ...

  6. 两个select级联操作实例(教师职称类型与职称)

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <hea ...

  7. 常用加密算法的Java实现总结(二) ——对称加密算法DES、3DES和AES

    1.对称加密算法 1.1 定义 对称加密算法是应用较早的加密算法,技术成熟.在对称加密算法中,数据发信方将明文(原始数据)和加密密钥(mi yue)一起经过特殊加密算法处理后,使其变成复杂的加密密文发 ...

  8. careercup-排序和查找 11.3

    11.3 给定一个排序后的数组,包含n个整数,但这个数组已被旋转很多次,次数不详.请编写代码找出数组中的某个元素.可以假定数组元素原先是按从小到大的顺序排序的. 解法: 可以直接从开始一个一个比较,也 ...

  9. 【转】SharePoint 中实现ReportView

    微软的Visual studio提供了ReportViewer控件以及RDLC报表设计工具.下文主要介绍如何在Sharepoint 2010项目开发中使用ReportViewer和RDLC生成项目报表 ...

  10. JQ实现复选框的全选反选不选

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...