换码序列,当然也支持string.format()里面的格式

作者: 编程  发布:2019-11-08

C#中$的用法:是为了替代string.format();原先赋值需要占位符和变量,当需要拼接多个变量会造成语句过长等不易理解问题,$""是为了替代string.format(),可以把字符串中的C#变量{}包含起来达到识别C#变量的目的$"{id}";也支持表达式,使用$"{(你的表达式)}"

条件运算符(?:)和 $""替代string.Format(),string.format

  1. 条件运算符(?:)根据Boolean表达式的值返回两个值之一。表达式如下:

condition ? first_expression : second_expression

 

  1. $""替代String.Format()方法,""中包含字符,有变量的需要用{}括起:

 

举例

if (bonus==false)

   return "$"+salary.ToString();

elase

  return "$"+(salary*10).ToString();

可以由如下代码替换:

return bonus ? string.Format("${0}",salary*10):string.Format("${0}",salary);   //String.Format()方法

 return bonus ? $"${salary*10}":$"${salary}"; //$""

 

$替代string.Format(),string.format 1. 条件运算符(?:)根据Boolean表达式的值返回两个值之一。表达式如下: condition...

1.awk的常规表达式元字符

awk笔记

awk:
awk名来:三个人名的缩写,他们是:Aho、(Peter)Weinberg 和(Brain)Kernighan;
行处理时可以处理行内字段,这是grep/sed搞不定的;特殊地,用$0表示正行;
用法:awk [ -F re] [parameter...] ['prog'] [-f progfile][in_file...]
-F 列分隔符;
prog:'pattern {action}',pattern是特定字符串,支持正则,如cat uids | awk '/[0-9]+.[0-9]*/{print}';
-f:符合awk语法的脚本文件;
in_file:输入文件,允许多个输入文件;???
pattern字符表示:
换码序列
^ 在字符串的开头开始匹配
$ 在字符串的结尾开始匹配
. 与任何单个字符串匹配
[ABC] 与[]内的任一字符匹配
[A-Ca-c] 与 A-C 及 a-c 范围内的字符匹配(按字母表顺序)
[^ABC] 与除[]内的所有字符以外的任一字符匹配
Desk|Chair 与 Desk 和 Chair 中的任一个匹配
[ABC][DEF] 关联。与 A、B、C 中的任一字符匹配,且其后要跟 D、E、F 中的任一个字符。
[ABC]* 与 A、B 或 C 中任一个出现 0 次或多次的字符相匹配
[ABC]+ 与 A、B 或 C 中任何一个出现 1 次或多次的字符相匹配
? 与一个空串或 A、B 或 C 在任何一个字符相匹配
(Blue|Black)berry 合并常规表达式,与 Blueberry 或 Blackberry 相匹配
算术运算符:
x^y x 的 y 次幂
x**y 同上
x%y 计算 x/y 的余数(求模)
x+y x 加 y
x-y x 减 y
x*y x 乘 y
x/y x 除 y
-y 负 y(y 的开关符号);也称一目减
++y y 加 1 后使用 y(前置加)
y++ 使用 y 值后加 1(后缀加)、
--y y 减 1 后使用 y(前置减)
y-- 使用后 y 减 1(后缀减)
x=y 将 y 的值赋给 x
x+=y 将 x+y 的值赋给 x
x-=y 将 x-y 的值赋给 x
x*=y 将 x*y 的值赋给 x
x/=y 将 x/y 的值赋给 x
x%=y 将 x%y 的值赋给 x
x^=y 将 x^y 的值赋给 x
x**=y 将 x**y 的值赋给 x
逻辑运算符:
x==y
x!=y
x>y
x>=y
x<y
x<=y
x~re
x!~re
内置变量:
ARGC: 命令行参数的数目。
ARGIND: 命令行中当前文件的位置(从0开始算)。
ARGV: 包含命令行参数的数组。
CONVFMT: 数字转换格式(默认值为%.6g)
ENVIRON: 环境变量关联数组。
ERRNO: 最后一个系统错误的描述。
FIELDWIDTHS: 字段宽度列表(用空格键分隔)。
FILENAME: 当前文件名。
FNR: 同NR,但相对于当前文件。
FS: 字段分隔符(默认是任何空格)。
IGNORECASE: 如果为真,则进行忽略大小写的匹配。
NF: 当前记录中的字段数。
NR: 当前记录数。
OFMT: 数字的输出格式(默认值是%.6g)。
OFS: 输出字段分隔符(默认值是一个空格)。
ORSL : 输出记录分隔符(默认值是一个换行符)。
RLENGTH: 由match函数所匹配的字符串的长度。
RS: 记录分隔符(默认是一个换行符)。
RSTART: 由match函数所匹配的字符串的第一个位置。
SUBSEP: 数组下标分隔符(默认值是34)
内置函数:类C风格用法;
printf:格式化输出,比如 awk '{printf "%03d%sn",NR,$1}' myfile
N gsub(reg,string,target) 每次常规表达式 reg 匹配时替换 target 中的 string
N index(search,string) 返回 string 中 search 串的位置
A length(string) 求串 string 中的字符个数
N match(string,reg) 返回常规表达式 reg 匹配的 string 中的位置
N printf(format,variable) 格式化输出,按 format 提供的格式输出变量 variable。
N split(string,store,delim) 根据分界符 delim,分解 string 为 store 的数组元素
N sprintf(format,variable) 返回一个包含基于 format 的格式化数据,variables 是要放到串中的数据
G strftime(format,timestamp) 返 回 一 个 基 于 format 的 日 期 或 者 时 间 串 ,timestmp 是 systime()函数返回的时间
N sub(reg,string,target) 第一次当常规表达式 reg 匹配,替换 target 串中的字符串
A substr(string,position,len) 返回一个以 position 开始 len 个字符的子串
P tolower(string) 返回 string 中对应的小写字符
P toupper(string) 返回 string 中对应的大写字符
A atan(x,y) x 的余切(弧度)
N cos(x) x 的余弦(弧度)
A exp(x) e 的 x 幂
A int(x) x 的整数部分
A log(x) x 的自然对数值
N rand() 0-1 之间的随机数
N sin(x) x 的正弦(弧度)
A sqrt(x) x 的平方根
A srand(x) 初始化随机数发生器。如果忽略 x,则使用 system()
G system() 返回自 1970 年 1 月 1 日以来经过的时间(按秒计算)
流程控制:
逻辑运算符:......
BEGIN/END:
if-else:
while/do-while/for/
break/continue/exit(退出但不跳过END)
next:读取下一条记录;
内容控制:
读入文件:getline
关闭文件:close,可以针对getline打开的文件;
导出文件: printf("hello word!n")>>"datafile"
导出到其它命令:printf("hello word!n")|"sort -t','"
读入其它命令结果:who -u | awk '{printf("%s 正在执行%sn",$2,$1)}'
在 awk 中执行 shell 命令行:嵌入函数 system(),该函数将传给它的参数视作命令执行:END {close("myreport.txt");system("lp myreport.txt");}
示例:
显示文本第7~15行:awk -F % 'NR==7,NR==15 {printf $1 $3 $7}'

技巧or注意:
1 如果要让 awk所使用变量的明确类型,应当在在程序中给它赋初值;awk不知道时默认字符串类型;
2 如果读入某列是数值且做数值处理时,如果某行该列不是合法数字,则awk将其视为0处理;
3 for ( x in myarray )打印数组时,并不依照顺序,可能是乱序输出;
4 if (1 in fooarray),数组是否包含该值????好像不起效果啊
5

awk: awk名来:三个人名的缩写,他们是:Aho、(Peter)Weinberg 和(Brain)Kernighan; 行处理时可以处理行内字段,这是grep/sed搞不定的;特殊地...

 var k = "a";  
 var a0 = "User";  
 var a1 = "Id";  
 var a2 = 5;  
 var ccc = string.Format("select * from {0} where {1} = {2}", a0, a1, a2);  
 var ccb = $"select * from {a0} where {a1}={a2}";  

 

 

换码序列

当然也支持string.format()里面的格式,如:

^ 在字符串的开头开始匹配

var k = "a";  
var k4 = $"{k,5}";  
var k3 = string.Format("{0,5}", k);  

var k2 = DateTime.Now;  
var c = $"{k2:yyyy}";  
c = string.Format("{0:yyyy}", k2);  

$ 在字符串的结尾开始匹配

 

. 与任何单个字符串匹配

 

[ABC] 与[]内的任一字符匹配

[A-Ca-c] 与A-C及a-c范围内的字符匹配(按字母表顺序)

[^ABC] 与除[]内的所有字符以外的任一字符匹配

Desk|Chair 与Desk和Chair中的任一个匹配

[ABC][DEF] 关联。与A、B、C中的任一字符匹配,且其后要跟D、E、F中的任一个字符。

* 与A、B或C中任一个出现0次或多次的字符相匹配  www.2cto.com  

+ 与A、B或C中任何一个出现1次或多次的字符相匹配

? 与一个空串或A、B或C在任何一个字符相匹配

(Blue|Black)berry 合并常规表达式,与Blueberry或Blackberry相匹配

 

2.awk算术运算符

 

运算符 用途


x^y x的y次幂

x**y 同上

x%y 计算x/y的余数(求模)

x+y x加y

x-y x减y

x*y x乘y

x/y x除y

-y 负y(y的开关符号);也称一目减

++y y加1后使用y(前置加)

y++ 使用y值后加1(后缀加)

--y y减1后使用y(前置减)

y-- 使用后y减1(后缀减)

x=y 将y的值赋给x

x+=y 将x+y的值赋给x

x-=y 将x-y的值赋给x

x*=y 将x*y的值赋给x

x/=y 将x/y的值赋给x x%=y 将x%y的值赋给x

x^=y 将x^y的值赋给x

x**=y 将x**y的值赋给x

  www.2cto.com  

3.awk允许的测试:

 

操作符 含义

 

x==y x等于y

x!=y x不等于y

x>y x大于y

x>=y x大于或等于y

x<y x小于y

x<=y x小于或等于y?

x~re x匹配正则表达式re?

x!~re x不匹配正则表达式re?

 

4.awk的操作符(按优先级升序排列)

 

= 、+=、 -=、 *= 、/= 、 %=

||

&&

> >= < <= == != ~ !~

xy (字符串连结,'x''y'变成"xy")

+ -

* / %

++ --

 

5.awk内置变量(预定义变量)

 

说明:表中v项表示第一个支持变量的工具(下同):A=awk,N=nawk,P=POSIX awk,G=gawk

 

V 变量 含义 缺省值


N ARGC 命令行参数个数

G ARGIND 当前被处理文件的ARGV标志符

N ARGV 命令行参数数组

G CONVFMT 数字转换格式 %.6g

P ENVIRON UNIX环境变量

N ERRNO UNIX系统错误消息

G FIELDWIDTHS 输入字段宽度的空白分隔字符串

A FILENAME 当前输入文件的名字

P FNR 当前记录数  www.2cto.com  

A FS 输入字段分隔符 空格

G IGNORECASE 控制大小写敏感0(大小写敏感)

A NF 当前记录中的字段个数

A NR 已经读出的记录数

A OFMT 数字的输出格式 %.6g

A OFS 输出字段分隔符 空格

A ORS 输出的记录分隔符 新行

A RS 输入的记录他隔符 新行

N RSTART 被匹配函数匹配的字符串首

N RLENGTH 被匹配函数匹配的字符串长度

N SUBSEP 下标分隔符 "34"

 

6.awk的内置函数

 

V 函数 用途或返回值


N gsub(reg,string,target) 每次常规表达式reg匹配时替换target中的string

N index(search,string) 返回string中search串的位置

A length(string) 求串string中的字符个数

N match(string,reg) 返回常规表达式reg匹配的string中的位置

N printf(format,variable) 格式化输出,按format提供的格式输出变量variable。

N split(string,store,delim) 根据分界符delim,分解string为store的数组元素

N sprintf(format,variable) 返回一个包含基于format的格式化数据,variables是要放到串中的数据

G strftime(format,timestamp) 返回一个基于format的日期或者时间串,timestmp是systime()函数返回的时间

N sub(reg,string,target) 第一次当常规表达式reg匹配,替换target串中的字符串

A substr(string,position,len) 返回一个以position开始len个字符的子串

P totower(string) 返回string中对应的小写字符

P toupper(string) 返回string中对应的大写字符

A atan(x,y) x的余切(弧度)  www.2cto.com  

N cos(x) x的余弦(弧度)

A exp(x) e的x幂

A int(x) x的整数部分

A log(x) x的自然对数值

N rand() 0-1之间的随机数

N sin(x) x的正弦(弧度)

A sqrt(x) x的平方根

A srand(x) 初始化随机数发生器。如果忽略x,则使用system()

G system() 返回自1970年1月1日以来经过的时间(按秒计算) 

 

 

 

作者 fengyv

换码序列 ^ 在字符串的开头开始匹配 $ 在字符串的结尾开始匹配 . 与任何单个字符串匹配 [ABC] 与[]内的任一字符...

本文由9159.com发布于编程,转载请注明出处:换码序列,当然也支持string.format()里面的格式

关键词:

上一篇:没有了
下一篇:没有了