正则|数字|Format
* C#正则常用表达式
1. string.Replce() 和 Regex.Replace()
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
//C# public String Replace(char oldChar, char newChar); public String Replace(String oldValue, String newValue); var reg2 = "kjfdkdj".Replace('d', '*'); //例子 //System.Text.RegularExpressions.Regex public static string Replace(string input, string pattern, MatchEvaluator evaluator, RegexOptions options, TimeSpan matchTimeout); public static string Replace(string input, string pattern, string replacement, RegexOptions options, TimeSpan matchTimeout); var reg1 = Regex.Replace("ajkd12jfk2334",@"\d", "*", RegexOptions.IgnoreCase); //例子
* string.Format()
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
//1、字符串的数字格式 string str1 =string.Format("{0:N1}",56789); //result: 56,789.0 string str2 =string.Format("{0:N2}",56789); //result: 56,789.00 string str3 =string.Format("{0:N3}",56789); //result: 56,789.000 string str8 =string.Format("{0:F1}",56789); //result: 56789.0 string str9 =string.Format("{0:F2}",56789); //result: 56789.00 string str11 =(56789 / 100.0).ToString("#.##"); //result: 567.89 string str12 =(56789 / 100).ToString("#.##"); //result: 567 //2、格式化货币(跟系统的环境有关,中文系统默认格式化人民币,英文系统格式化美元) string.Format("{0:C}",0.2) //结果为:¥0.20 (英文操作系统结果:$0.20) //默认格式化小数点后面保留两位小数,如果需要保留一位或者更多,可以指定位数 string.Format("{0:C1}",23.15) //结果为:¥23.2 (截取会自动四舍五入) //格式化多个Object实例 string.Format("市场价:{0:C},优惠价{1:C}",23.15,19.82) //3、格式化十进制的数字(格式化成固定的位数,位数不能少于未格式化前,只支持整形) string.Format("{0:D3}",23) //结果为:023 string.Format("{0:D2}",1223) //结果为:1223,(精度说明符指示结果字符串中所需的最少数字个数。) // 4、用分号隔开的数字,并指定小数点后的位数 string.Format("{0:N}", 14200) //结果为:14,200.00 (默认为小数点后面两位) string.Format("{0:N3}", 14200.2458) //结果为:14,200.246 (自动四舍五入) //5、格式化百分比 string.Format("{0:P}", 0.24583) //结果为:24.58% (默认保留百分的两位小数) string.Format("{0:P1}", 0.24583) //结果为:24.6% (自动四舍五入) //6、零占位符和数字占位符 string.Format("{0:0000.00}", 12394.039) //结果为:12394.04 string.Format("{0:0000.00}", 194.039) //结果为:0194.04 string.Format("{0:###.##}", 12394.039) //结果为:12394.04 string.Format("{0:####.#}", 194.039) //结果为:194 //下面的这段说明比较难理解,多测试一下实际的应用就可以明白了。 零占位符: 如果格式化的值在格式字符串中出现“0”的位置有一个数字,则此数字被复制到结果字符串中。小数点前最左边的“0”的位置和小数点后最右边的“0”的位置确定总在结果字符串中出现的数字范围。 “00”说明符使得值被舍入到小数点前最近的数字,其中零位总被舍去。 数字占位符: 如果格式化的值在格式字符串中出现“#”的位置有一个数字,则此数字被复制到结果字符串中。否则,结果字符串中的此位置不存储任何值。 请注意,如果“0”不是有效数字,此说明符永不显示“0”字符,即使“0”是字符串中唯一的数字。如果“0”是所显示的数字中的有效数字,则显示“0”字符。 “##”格式字符串使得值被舍入到小数点前最近的数字,其中零总被舍去。 //7、日期格式化 string.Format("{0:d}",System.DateTime.Now) //结果为:2009-3-20 (月份位置不是03) string.Format("{0:D}",System.DateTime.Now) //结果为:2009年3月20日 string.Format("{0:f}",System.DateTime.Now) //结果为:2009年3月20日 15:37 string.Format("{0:F}",System.DateTime.Now) //结果为:2009年3月20日 15:37:52 string.Format("{0:g}",System.DateTime.Now) //结果为:2009-3-20 15:38 string.Format("{0:G}",System.DateTime.Now) //结果为:2009-3-20 15:39:27 string.Format("{0:m}",System.DateTime.Now) //结果为:3月20日 string.Format("{0:t}",System.DateTime.Now) //结果为:15:41 string.Format("{0:T}",System.DateTime.Now) //结果为:15:41:50
1、toString("N")
int k = 12345678; //ToString(string format) var s2 = k.ToString("N1"); //12,345,678.0 保留了一位小数 N 数字,以逗号分隔 var c1 = 2.5.ToString("C"); //¥2.50 货币 var d1 = 25.ToString("D5"); //00025 十进制 var e1 = 25000.ToString("E"); //2.500000E+004 科学型 var f1 = 252378473.ToString("F2"); //25.00 固定点,两位小数点,中间不用逗号分开 var g1 = 2.5.ToString("G"); //2.5 常规 var x1 = 255.ToString("X"); //FF 十六进制 string dt = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); //大写HH为24小时制,小写hh为12小时制
* 数值测试:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #region 把字符串转换为数值 2 //把string类型的转为int类型,并附一个默认值 3 try 4 { 5 var int1 = int.Parse("3.2" ?? "0"); //会抛出异常,前面一个必须是string类型 6 } 7 catch (Exception ex) 8 { 9 } 10 var double2 = double.Parse("4" ?? "0.0"); 11 12 //返回bool类型,如果转换成功并返回成功的值;不抛出异常 13 int int2 = 0; 14 var flag = int.TryParse("3", out int2); 15 #endregion 16 17 18 //保留2位小数,不四舍五入 19 var a = Convert.ToDecimal((int)(0.018 * 100) / 100.00); 20 21 var d = Math.Truncate(3.50034);//截取整数,返回时double类型 22 var d2 = Math.Round(3.56734, 2); //四舍五入 23 24 //先要判断是否为null 25 string c = null; 26 string e = c != null ? c.Contains("*") + "不为空" : "为空";
* 时间格式化
ToString("yyyy-MM-dd HH:mm:ss.fff")); 2016-09-27 01:02:03.001 // fff 越多精度越高
ToString("yyyy-MM-dd HH:mm:ss:ms")); 2016-09-27 01:02:03:234
new DateTime(1900, 1, 1) ; DateTime.MinValue;
详细解释:
1.y代表年份,注意是小写的y,大写的Y并不代表年份。
2.M表示月份。
3.d表示日期,注意D并不代表什么。
4.h或H表示小时,h用的是12小时制,H用的是24小时制。
5.m表示分钟。
6.s表示秒。注意S并不代表什么。
* 正斜杠 / 和反斜杠 \ 的区别
解释
1、” / ” 英文是forward slash, “ \ ” 是backward slash ; 形象些比喻的话,” / “是一个人站立着向前倾倒->, 而” \ “是一个人站立着向后倾倒。
2、“在绝大多数地方,用的都是 /(forward slash),包括Mac/Linux,也包括URL。你唯一需要记住的是,而Microsoft在自己的操作系统里面偏要用 \(backslash),使得自己与众不同。
历史背景:
1、Unix使用斜杠/作为路径分割符,而Web应用最先是使用在Unix系统上面,所以目前所有的网络地址都采用斜杠/作为分隔符。
2、Windows由于使用斜杠/作为DOS命令提示符的参数标志了,为了不混淆,所以采用反斜杠\作为路径分隔符。所以目前windows系统上的文件浏览器都是用反斜杠\作为路径分隔符。随着发展,DOS系统已经被淘汰了,命令提示符也用得很少,斜杠和反斜杠在大多数情况下可以互换,没有影响。(可以输入cmd命令符自行验证 “\” 和”/”是否有区别)
结论
1、浏览器地址栏网址使用 正斜杠/;
2、windows文件浏览器上使用 反斜杠\;
3、出现在htm url()属性中的路径,指定的路径是网络路径,所以必须使用 正斜杠/;
<div style="background-image:url(/Image/Control/title.jpg); background-repeat:repeat-x; padding:10px 10px 10px 10px"></div> // 如果url后面用反斜杠,就不会显示任何背景
4、出现在普通字符串的路径,如果代表的是windows文件路径,则使用 正斜杠/和 反斜杠\是一样的;如果代表的是网络文件路径,则必须使用 正斜杠/;
<img src=".\Image/Control/ding.jpg" /> // 本地文件路径,/ 和 \ 是等效的 <img src="./Image\Control\cai.jpg" /> <img src="http://hiphotos.baidu.com/yuhua522/pic/item/01a949c67e1023549c163df2.jpg" /> // 网络文件路径,一定要使用 斜杆/
相对路径和绝对路径:
./SRC/ 这样写表示,当前目录中的SRC文件夹;
../SRC/ 这样写表示,当前目录的上一层目录中SRC文件夹;
/SRC/ 这样写表示,项目根目录(可以只磁盘根目录,也可以指项目根目录,具体根据实际情况而定)
JavaScript:
stringObj.replace(rgExp, replaceText) 其中stringObj是字符串(string),reExp可以是正则表达式对象(RegExp)也可以是字符串(string),replaceText是替代查找到的字符串。
1. javascript 把字符串中的反斜杠(\)替换成双斜杠(\\)
replace(/\\/g,"\\\\");
2.javascript 把字符串中的反斜杠(\)替换成斜杠(/)
replace(/\\/g,"\/");
3.javascript 把字符串中的斜杠(/)替换成反斜杠(\)
replace(/\//g,"\\");