1. ------------------------------------------------------------
  2.  
  3. Golang中的正则表达式
  4.  
  5. ------------------------------------------------------------
  6.  
  7. 用法:
  8.  
  9. ------------------------------
  10.  
  11. 单一:
  12.  
  13. . 匹配任意一个字符,如果设置 s = true,则可以匹配换行符
  14.  
  15. [字符类] 匹配“字符类”中的一个字符,“字符类”见后面的说明
  16. [^字符类] 匹配“字符类”外的一个字符,“字符类”见后面的说明
  17.  
  18. \小Perl标记 匹配“Perl类”中的一个字符,“Perl类”见后面的说明
  19. \大Perl标记 匹配“Perl类”外的一个字符,“Perl类”见后面的说明
  20.  
  21. [:ASCII类名:] 匹配“ASCII类”中的一个字符,“ASCII类”见后面的说明
  22. [:^ASCII类名:] 匹配“ASCII类”外的一个字符,“ASCII类”见后面的说明
  23.  
  24. \pUnicode普通类名 匹配“Unicode类”中的一个字符(仅普通类),“Unicode类”见后面的说明
  25. \PUnicode普通类名 匹配“Unicode类”外的一个字符(仅普通类),“Unicode类”见后面的说明
  26.  
  27. \p{Unicode类名} 匹配“Unicode类”中的一个字符,“Unicode类”见后面的说明
  28. \P{Unicode类名} 匹配“Unicode类”外的一个字符,“Unicode类”见后面的说明
  29.  
  30. ------------------------------
  31.  
  32. 复合:
  33.  
  34. xy 匹配 xyx 后面跟随 y
  35. x|y 匹配 x y (优先匹配 x)
  36.  
  37. ------------------------------
  38.  
  39. 重复:
  40.  
  41. x* 匹配零个或多个 x,优先匹配更多(贪婪)
  42. x+ 匹配一个或多个 x,优先匹配更多(贪婪)
  43. x? 匹配零个或一个 x,优先匹配一个(贪婪)
  44. x{n,m} 匹配 n m x,优先匹配更多(贪婪)
  45. x{n,} 匹配 n 个或多个 x,优先匹配更多(贪婪)
  46. x{n} 只匹配 n x
  47. x*? 匹配零个或多个 x,优先匹配更少(非贪婪)
  48. x+? 匹配一个或多个 x,优先匹配更少(非贪婪)
  49. x?? 匹配零个或一个 x,优先匹配零个(非贪婪)
  50. x{n,m}? 匹配 n m x,优先匹配更少(非贪婪)
  51. x{n,}? 匹配 n 个或多个 x,优先匹配更少(非贪婪)
  52. x{n}? 只匹配 n x
  53.  
  54. ------------------------------
  55.  
  56. 分组:
  57.  
  58. (子表达式) 被捕获的组,该组被编号 (子匹配)
  59. (?P<命名>子表达式) 被捕获的组,该组被编号且被命名 (子匹配)
  60. (?:子表达式) 非捕获的组 (子匹配)
  61. (?标记) 在组内设置标记,非捕获,标记影响当前组后的正则表达式
  62. (?标记:子表达式) 在组内设置标记,非捕获,标记影响当前组内的子表达式
  63.  
  64. 标记的语法是:
  65. xyz (设置 xyz 标记)
  66. -xyz (清除 xyz 标记)
  67. xy-z (设置 xy 标记, 清除 z 标记)
  68.  
  69. 可以设置的标记有:
  70. i 不区分大小写 (默认为 false)
  71. m 多行模式:让 ^ $ 匹配整个文本的开头和结尾,而非行首和行尾(默认为 false)
  72. s . 匹配 \n (默认为 false)
  73. U 非贪婪模式:交换 x* x*? 等的含义 (默认为 false)
  74.  
  75. ------------------------------
  76.  
  77. 位置标记:
  78.  
  79. ^ 如果标记 m=true 则匹配行首,否则匹配整个文本的开头(m 默认为 false
  80. $ 如果标记 m=true 则匹配行尾,否则匹配整个文本的结尾(m 默认为 false
  81. \A 匹配整个文本的开头,忽略 m 标记
  82. \b 匹配单词边界
  83. \B 匹配非单词边界
  84. \z 匹配整个文本的结尾,忽略 m 标记
  85.  
  86. ------------------------------
  87.  
  88. 转义序列:
  89.  
  90. \a 匹配响铃符 (相当于 \x07
  91. 注意:正则表达式中不能使用 \b 匹配退格符,因为 \b 被用来匹配单词边界,
  92. 可以使用 \x08 表示退格符。
  93. \f 匹配换页符 (相当于 \x0C
  94. \t 匹配横向制表符(相当于 \x09
  95. \n 匹配换行符 (相当于 \x0A
  96. \r 匹配回车符 (相当于 \x0D
  97. \v 匹配纵向制表符(相当于 \x0B
  98. \123 匹配 8 進制编码所代表的字符(必须是 3 位数字)
  99. \x7F 匹配 16 進制编码所代表的字符(必须是 3 位数字)
  100. \x{10FFFF} 匹配 16 進制编码所代表的字符(最大值 10FFFF
  101. \Q...\E 匹配 \Q \E 之间的文本,忽略文本中的正则语法
  102.  
  103. \\ 匹配字符 \
  104. \^ 匹配字符 ^
  105. \$ 匹配字符 $
  106. \. 匹配字符 .
  107. \* 匹配字符 *
  108. \+ 匹配字符 +
  109. \? 匹配字符 ?
  110. \{ 匹配字符 {
  111. \} 匹配字符 }
  112. \( 匹配字符 (
  113. \) 匹配字符 )
  114. \[ 匹配字符 [
  115. \] 匹配字符 ]
  116. \| 匹配字符 |
  117.  
  118. ------------------------------
  119.  
  120. 可以将“命名字符类”作为“字符类”的元素:
  121.  
  122. [\d] 匹配数字 (相当于 \d)
  123. [^\d] 匹配非数字 (相当于 \D)
  124. [\D] 匹配非数字 (相当于 \D)
  125. [^\D] 匹配数字 (相当于 \d)
  126. [[:name:]] 命名的“ASCII 类”包含在“字符类”中 (相当于 [:name:])
  127. [^[:name:]] 命名的“ASCII 类”不包含在“字符类”中 (相当于 [:^name:])
  128. [\p{Name}] 命名的“Unicode 类”包含在“字符类”中 (相当于 \p{Name})
  129. [^\p{Name}] 命名的“Unicode 类”不包含在“字符类”中 (相当于 \P{Name})
  130.  
  131. ------------------------------------------------------------
  132.  
  133. 说明:
  134.  
  135. ------------------------------
  136.  
  137. “字符类”取值如下(“字符类”包含“Perl类”、“ASCII类”、“Unicode类”):
  138. x 单个字符
  139. A-Z 字符范围(包含首尾字符)
  140. \小写字母 Perl
  141. [:ASCII类名:] ASCII
  142. \p{Unicode脚本类名} Unicode (脚本类)
  143. \pUnicode普通类名 Unicode (普通类)
  144.  
  145. ------------------------------
  146.  
  147. Perl 类”取值如下:
  148.  
  149. \d 数字 (相当于 [0-9])
  150. \D 非数字 (相当于 [^0-9])
  151. \s 空白 (相当于 [\t\n\f\r ])
  152. \S 非空白 (相当于[^\t\n\f\r ])
  153. \w 单词字符 (相当于 [0-9A-Za-z_])
  154. \W 非单词字符 (相当于 [^0-9A-Za-z_])
  155.  
  156. ------------------------------
  157.  
  158. ASCII 类”取值如下
  159.  
  160. [:alnum:] 字母数字 (相当于 [0-9A-Za-z])
  161. [:alpha:] 字母 (相当于 [A-Za-z])
  162. [:ascii:] ASCII 字符集 (相当于 [\x00-\x7F])
  163. [:blank:] 空白占位符 (相当于 [\t ])
  164. [:cntrl:] 控制字符 (相当于 [\x00-\x1F\x7F])
  165. [:digit:] 数字 (相当于 [0-9])
  166. [:graph:] 图形字符 (相当于 [!-~])
  167. [:lower:] 小写字母 (相当于 [a-z])
  168. [:print:] 可打印字符 (相当于 [ -~] 相当于 [ [:graph:]])
  169. [:punct:] 标点符号 (相当于 [!-/:-@[-反引号{-~])
  170. [:space:] 空白字符(相当于 [\t\n\v\f\r ])
  171. [:upper:] 大写字母(相当于 [A-Z])
  172. [:word:] 单词字符(相当于 [0-9A-Za-z_])
  173. [:xdigit:] 16 進制字符集(相当于 [0-9A-Fa-f])
  174.  
  175. ------------------------------
  176.  
  177. Unicode 类”取值如下---普通类:
  178.  
  179. C -其他- (other)
  180. Cc 控制字符 (control)
  181. Cf 格式 (format)
  182. Co 私人使用区 (private use)
  183. Cs 代理区 (surrogate)
  184. L -字母- (letter)
  185. Ll 小写字母 (lowercase letter)
  186. Lm 修饰字母 (modifier letter)
  187. Lo 其它字母 (other letter)
  188. Lt 首字母大写字母 (titlecase letter)
  189. Lu 大写字母 (uppercase letter)
  190. M -标记- (mark)
  191. Mc 间距标记 (spacing mark)
  192. Me 关闭标记 (enclosing mark)
  193. Mn 非间距标记 (non-spacing mark)
  194. N -数字- (number)
  195. Nd 十進制数字 (decimal number)
  196. Nl 字母数字 (letter number)
  197. No 其它数字 (other number)
  198. P -标点- (punctuation)
  199. Pc 连接符标点 (connector punctuation)
  200. Pd 破折号标点符号 (dash punctuation)
  201. Pe 关闭的标点符号 (close punctuation)
  202. Pf 最后的标点符号 (final punctuation)
  203. Pi 最初的标点符号 (initial punctuation)
  204. Po 其他标点符号 (other punctuation)
  205. Ps 开放的标点符号 (open punctuation)
  206. S -符号- (symbol)
  207. Sc 货币符号 (currency symbol)
  208. Sk 修饰符号 (modifier symbol)
  209. Sm 数学符号 (math symbol)
  210. So 其他符号 (other symbol)
  211. Z -分隔符- (separator)
  212. Zl 行分隔符 (line separator)
  213. Zp 段落分隔符 (paragraph separator)
  214. Zs 空白分隔符 (space separator)
  215.  
  216. ------------------------------
  217.  
  218. Unicode 类”取值如下---脚本类:
  219.  
  220. Arabic 阿拉伯文
  221. Armenian 亚美尼亚文
  222. Balinese 巴厘岛文
  223. Bengali 孟加拉文
  224. Bopomofo 汉语拼音字母
  225. Braille 盲文
  226. Buginese 布吉文
  227. Buhid 布希德文
  228. Canadian_Aboriginal 加拿大土著文
  229. Carian 卡里亚文
  230. Cham 占族文
  231. Cherokee 切诺基文
  232. Common 普通的,字符不是特定于一个脚本
  233. Coptic 科普特文
  234. Cuneiform 楔形文字
  235. Cypriot 塞浦路斯文
  236. Cyrillic 斯拉夫文
  237. Deseret 犹他州文
  238. Devanagari 梵文
  239. Ethiopic 衣索比亚文
  240. Georgian 格鲁吉亚文
  241. Glagolitic 格拉哥里文
  242. Gothic 哥特文
  243. Greek 希腊
  244. Gujarati 古吉拉特文
  245. Gurmukhi 果鲁穆奇文
  246. Han 汉文
  247. Hangul 韩文
  248. Hanunoo 哈鲁喏文
  249. Hebrew 希伯来文
  250. Hiragana 平假名(日语)
  251. Inherited 继承前一个字符的脚本
  252. Kannada 坎那达文
  253. Katakana 片假名(日语)
  254. Kayah_Li 克耶字母
  255. Kharoshthi 卡罗须提文
  256. Khmer 高棉文
  257. Lao 老挝文
  258. Latin 拉丁文
  259. Lepcha 雷布查文
  260. Limbu 林布文
  261. Linear_B B类线形文字(古希腊)
  262. Lycian 利西亚文
  263. Lydian 吕底亚文
  264. Malayalam 马拉雅拉姆文
  265. Mongolian 蒙古文
  266. Myanmar 缅甸文
  267. New_Tai_Lue 新傣仂文
  268. Nko Nko
  269. Ogham 欧甘文
  270. Ol_Chiki 桑塔利文
  271. Old_Italic 古意大利文
  272. Old_Persian 古波斯文
  273. Oriya 奥里亚文
  274. Osmanya 奥斯曼亚文
  275. Phags_Pa 八思巴文
  276. Phoenician 腓尼基文
  277. Rejang 拉让文
  278. Runic 古代北欧文字
  279. Saurashtra 索拉什特拉文(印度县城)
  280. Shavian 萧伯纳文
  281. Sinhala 僧伽罗文
  282. Sundanese 巽他文
  283. Syloti_Nagri 锡尔赫特文
  284. Syriac 叙利亚文
  285. Tagalog 塔加拉文
  286. Tagbanwa 塔格巴努亚文
  287. Tai_Le 德宏傣文
  288. Tamil 泰米尔文
  289. Telugu 泰卢固文
  290. Thaana 塔安那文
  291. Thai 泰文
  292. Tibetan 藏文
  293. Tifinagh 提非纳文
  294. Ugaritic 乌加里特文
  295. Vai 瓦伊文
  296. Yi 彝文
  297.  
  298. ------------------------------------------------------------
  299.  
  300. 注意:
  301.  
  302.   对于 [a-z] 这样的正则表达式,如果要在 [] 中匹配 - ,可以将 - 放在 [] 的开头或结尾,例如 [-a-z] [a-z-]
  303.  
  304.   可以在 [] 中使用转义字符:\f\t\n\r\v\377\xFF\x{10FFFF}、\\\^\$\.\*\+\?\{\}\(\)\[\]\|(具体含义见上面的说明)
  305.  
  306.   如果在正则表达式中使用了分组,则在执行正则替换的时候,“替换内容”中可以使用 $1${1}、$name${name} 这样的“分组引用符”获取相应的分组内容。其中 $0 代表整个匹配项,$1 代表第 1 个分组,$2 代表第 2 个分组,……。
  307.  
  308.   如果“分组引用符”是 $name 的形式,则在解析的时候,name 是取尽可能长的字符串,比如:$1x 相当于 ${1x},而不是${1}x,再比如:$10 相当于 ${10},而不是 ${1}0
  309.  
  310.   由于 $ 字符会被转义,所以要在“替换内容”中使用 $ 字符,可以用 \$ 代替。
  311.  
  312.   上面介绍的正则表达式语法是“Perl 语法”,除了“Perl 语法”外,Go 语言中还有另一种“POSIX 语法”,“POSIX 语法”除了不能使用“Perl 类”之外,其它都一样。
  313.  
  314. ------------------------------------------------------------
  315.  
  316. // 示例
  317. func main() {
  318. text := `Hello 世界!123 Go.`
  319.  
  320. // 查找连续的小写字母
  321. reg := regexp.MustCompile(`[a-z]+`)
  322. fmt.Printf("%q\n", reg.FindAllString(text, -1))
  323. // ["ello" "o"]
  324.  
  325. // 查找连续的非小写字母
  326. reg = regexp.MustCompile(`[^a-z]+`)
  327. fmt.Printf("%q\n", reg.FindAllString(text, -1))
  328. // ["H" " 世界!123 G" "."]
  329.  
  330. // 查找连续的单词字母
  331. reg = regexp.MustCompile(`[\w]+`)
  332. fmt.Printf("%q\n", reg.FindAllString(text, -1))
  333. // ["Hello" "123" "Go"]
  334.  
  335. // 查找连续的非单词字母、非空白字符
  336. reg = regexp.MustCompile(`[^\w\s]+`)
  337. fmt.Printf("%q\n", reg.FindAllString(text, -1))
  338. // ["世界!" "."]
  339.  
  340. // 查找连续的大写字母
  341. reg = regexp.MustCompile(`[[:upper:]]+`)
  342. fmt.Printf("%q\n", reg.FindAllString(text, -1))
  343. // ["H" "G"]
  344.  
  345. // 查找连续的非 ASCII 字符
  346. reg = regexp.MustCompile(`[[:^ascii:]]+`)
  347. fmt.Printf("%q\n", reg.FindAllString(text, -1))
  348. // ["世界!"]
  349.  
  350. // 查找连续的标点符号
  351. reg = regexp.MustCompile(`[\pP]+`)
  352. fmt.Printf("%q\n", reg.FindAllString(text, -1))
  353. // ["!" "."]
  354.  
  355. // 查找连续的非标点符号字符
  356. reg = regexp.MustCompile(`[\PP]+`)
  357. fmt.Printf("%q\n", reg.FindAllString(text, -1))
  358. // ["Hello 世界" "123 Go"]
  359.  
  360. // 查找连续的汉字
  361. reg = regexp.MustCompile(`[\p{Han}]+`)
  362. fmt.Printf("%q\n", reg.FindAllString(text, -1))
  363. // ["世界"]
  364.  
  365. // 查找连续的非汉字字符
  366. reg = regexp.MustCompile(`[\P{Han}]+`)
  367. fmt.Printf("%q\n", reg.FindAllString(text, -1))
  368. // ["Hello " "!123 Go."]
  369.  
  370. // 查找 Hello 或 Go
  371. reg = regexp.MustCompile(`Hello|Go`)
  372. fmt.Printf("%q\n", reg.FindAllString(text, -1))
  373. // ["Hello" "Go"]
  374.  
  375. // 查找行首以 H 开头,以空格结尾的字符串
  376. reg = regexp.MustCompile(`^H.*\s`)
  377. fmt.Printf("%q\n", reg.FindAllString(text, -1))
  378. // ["Hello 世界!123 "]
  379.  
  380. // 查找行首以 H 开头,以空白结尾的字符串(非贪婪模式)
  381. reg = regexp.MustCompile(`(?U)^H.*\s`)
  382. fmt.Printf("%q\n", reg.FindAllString(text, -1))
  383. // ["Hello "]
  384.  
  385. // 查找以 hello 开头(忽略大小写),以 Go 结尾的字符串
  386. reg = regexp.MustCompile(`(?i:^hello).*Go`)
  387. fmt.Printf("%q\n", reg.FindAllString(text, -1))
  388. // ["Hello 世界!123 Go"]
  389.  
  390. // 查找 Go.
  391. reg = regexp.MustCompile(`\QGo.\E`)
  392. fmt.Printf("%q\n", reg.FindAllString(text, -1))
  393. // ["Go."]
  394.  
  395. // 查找从行首开始,以空格结尾的字符串(非贪婪模式)
  396. reg = regexp.MustCompile(`(?U)^.* `)
  397. fmt.Printf("%q\n", reg.FindAllString(text, -1))
  398. // ["Hello "]
  399.  
  400. // 查找以空格开头,到行尾结束,中间不包含空格字符串
  401. reg = regexp.MustCompile(` [^ ]*$`)
  402. fmt.Printf("%q\n", reg.FindAllString(text, -1))
  403. // [" Go."]
  404.  
  405. // 查找“单词边界”之间的字符串
  406. reg = regexp.MustCompile(`(?U)\b.+\b`)
  407. fmt.Printf("%q\n", reg.FindAllString(text, -1))
  408. // ["Hello" " 世界!" "123" " " "Go"]
  409.  
  410. // 查找连续 1 次到 4 次的非空格字符,并以 o 结尾的字符串
  411. reg = regexp.MustCompile(`[^ ]{1,4}o`)
  412. fmt.Printf("%q\n", reg.FindAllString(text, -1))
  413. // ["Hello" "Go"]
  414.  
  415. // 查找 Hello 或 Go
  416. reg = regexp.MustCompile(`(?:Hell|G)o`)
  417. fmt.Printf("%q\n", reg.FindAllString(text, -1))
  418. // ["Hello" "Go"]
  419.  
  420. // 查找 Hello 或 Go,替换为 Hellooo、Gooo
  421. reg = regexp.MustCompile(`(?PHell|G)o`)
  422. fmt.Printf("%q\n", reg.ReplaceAllString(text, "${n}ooo"))
  423. // "Hellooo 世界!123 Gooo."
  424.  
  425. // 交换 Hello 和 Go
  426. reg = regexp.MustCompile(`(Hello)(.*)(Go)`)
  427. fmt.Printf("%q\n", reg.ReplaceAllString(text, "$3$2$1"))
  428. // "Go 世界!123 Hello."
  429.  
  430. // 特殊字符的查找
  431. reg = regexp.MustCompile(`[\f\t\n\r\v\123\x7F\x{10FFFF}\\\^\$\.\*\+\?\{\}\(\)\[\]\|]`)
  432. fmt.Printf("%q\n", reg.ReplaceAllString("\f\t\n\r\v\123\x7F\U0010FFFF\\^$.*+?{}()[]|", "-"))
  433. // "----------------------"
  434. }
  435.  
  436. ------------------------------------------------------------

基础知识 - Golang 中的正则表达式的更多相关文章

  1. 基础知识 - Golang 中的格式化输入输出

    ------------------------------------------------------------ [格式化输出] // 格式化输出:将 arg 列表中的 arg 转换为字符串输 ...

  2. 学习Python3基础知识过程中总结

    print()中end==""的用法 例子:用Python3输出九九乘法表: for i in range(1,10): for j in range(1,i+1): s=i*j ...

  3. 20151024_004_C#基础知识(C#中的访问修饰符,继承,new关键字,里氏转换,is 和 as,多态,序列化与反序列化)

    1:C#中的访问修饰符 public: 公共成员,完全公开,没有访问限制. private: 私有的,只能在当前类的内部访问. protected: 受保护的,只能在当前类的内部以及该类的子类中访问. ...

  4. Java基础知识强化75:正则表达式之分割功能(字符串中的数字排序案例)

    1. 案例分析: 我有如下一个字符串:"91 27 46 38 50" 写代码实现最终输出结果是:"27 38 46 50 91" 分析:    (1)定义一个 ...

  5. Java基础知识强化78:正则表达式之获取功能(案例)

    1. 获取下面这个字符串中由三个字符组成的单词. da jia ting wo shuo,jin tian yao xia yu,bu shang wan zi xi,gao xing bu? 2. ...

  6. Java基础知识强化76:正则表达式之替换功能

    1. 替换功能: String类的replaceAll方法,如下: public String replaceAll(String regex, String replacement): 使用给定的r ...

  7. Java基础知识强化71:正则表达式之基本规则 和 常用正则表达式

    1. 基本规则: A:字符 x 字符 x.举例:'a'表示字符a \\ 反斜线字符. \n 新行(换行)符 ('\u000A') \r 回车符 ('\u000D') B:字符类 [abc] a.b 或 ...

  8. Golang中的正则表达式

    声明:文章转自GoLove 用法: 单一: . 匹配任意一个字符,如果设置 s = true,则可以匹配换行符 [字符类] 匹配"字符类"中的一个字符,"字符类" ...

  9. Java基础知识强化77:正则表达式之获取功能(Pattern 和 Matcher类的使用)

    1. 获取功能: Pattern 和 Matcher类结合使用 2. 使用案例: package cn.itcast_05; import java.util.regex.Matcher; impor ...

随机推荐

  1. 第二百一十四天 how can I 坚持

    今天肯定有需要记录的东西. html表格. table tr rd colspan rowspan, 还有呢.没了. 睡觉,明天石洋要来泛华. 睡觉.

  2. SQL SERVER安装提示“安装了 Microsoft Visual Studio 2008 的早期版本

    工作共遇到的问题记录: 安装Sql Server 2008 R2时提示错误:“此计算机上安装了 Microsoft Visual Studio 2008 的早期版本.请在安装 SQL Server 2 ...

  3. $watch How the $apply Runs a $digest

    作者:junyuecao | 发表于 8-8 13:39 | 最后更新时间:8-9 02:34 原文地址:http://angular-tips.com/blog/2013/08/watch-how- ...

  4. JAVA应用apache httpclient探测http服务

    代码很简单,apache都已经提供了封装. import org.apache.commons.httpclient.HttpClient; import org.apache.commons.htt ...

  5. HDU 2196 Computer (树dp)

    题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=2196 给你n个点,n-1条边,然后给你每条边的权值.输出每个点能对应其他点的最远距离是多少 ...

  6. CCF 201403-3 命令行选项 (STL模拟)

    问题描述 请你写一个命令行分析程序,用以分析给定的命 令行里包含哪些选项.每个命令行由若干个字符串组成,它们之间恰好由一个空格分隔.这些字符串中的第一个为该命令行工具的名字,由小写字母组成,你的程序 ...

  7. C#图解教程读书笔记(第1章 C#和.net框架)

    C#中的主要需要记住的基础概念 CLR公共语言运行库 CIL中间语言,所有的代码都会编译成中间语言. CLI公共语言基础结构 C#的优点 C#有自动垃圾回收机制

  8. centOS安装openoffice

    centOS安装openoffice的方法: yum install openoffice.org-writer yum install openoffice.org-calc yum install ...

  9. sql server对并发的处理-乐观锁和悲观锁【粘】

    假如两个线程同时修改数据库同一条记录,就会导致后一条记录覆盖前一条,从而引发一些问题. 例如: 一个售票系统有一个余票数,客户端每调用一次出票方法,余票数就减一. 情景: 总共300张票,假设两个售票 ...

  10. js时间转换相关

    1.json时间格式转换 function ChangeDateFormat(jsondate) { if (!jsondate||jsondate.length < 1) {return &q ...