string.n
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:14k
源码类别:

通讯编程

开发平台:

Visual C++

  1. '"
  2. '" Copyright (c) 1993 The Regents of the University of California.
  3. '" Copyright (c) 1994-1996 Sun Microsystems, Inc.
  4. '"
  5. '" See the file "license.terms" for information on usage and redistribution
  6. '" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
  7. '" 
  8. '" RCS: @(#) $Id: string.n,v 1.17.2.4 2006/12/14 14:24:22 dkf Exp $
  9. '" 
  10. .so man.macros
  11. .TH string n 8.1 Tcl "Tcl Built-In Commands"
  12. .BS
  13. '" Note:  do not modify the .SH NAME line immediately below!
  14. .SH NAME
  15. string - Manipulate strings
  16. .SH SYNOPSIS
  17. fBstring fIoption arg fR?fIarg ...?fR
  18. .BE
  19. .SH DESCRIPTION
  20. .PP
  21. Performs one of several string operations, depending on fIoptionfR.
  22. The legal fIoptionfRs (which may be abbreviated) are:
  23. .TP
  24. fBstring bytelength fIstringfR
  25. Returns a decimal string giving the number of bytes used to represent
  26. fIstringfR in memory.  Because UTF-8 uses one to three bytes to
  27. represent Unicode characters, the byte length will not be the same as
  28. the character length in general.  The cases where a script cares about
  29. the byte length are rare.  In almost all cases, you should use the
  30. fBstring lengthfR operation (including determining the length of a
  31. Tcl ByteArray object).  Refer to the fBTcl_NumUtfCharsfR manual
  32. entry for more details on the UTF-8 representation.
  33. .TP
  34. fBstring comparefR ?fB-nocasefR? ?fB-length intfR? fIstring1 string2fR
  35. Perform a character-by-character comparison of strings fIstring1fR
  36. and fIstring2fR.  Returns -1, 0, or 1, depending on whether
  37. fIstring1fR is lexicographically less than, equal to, or greater
  38. than fIstring2fR.  If fB-lengthfR is specified, then only the
  39. first fIlengthfR characters are used in the comparison.  If
  40. fB-lengthfR is negative, it is ignored.  If fB-nocasefR is
  41. specified, then the strings are compared in a case-insensitive manner.
  42. .TP
  43. fBstring equalfR ?fB-nocasefR? ?fB-length intfR? fIstring1 string2fR
  44. Perform a character-by-character comparison of strings fIstring1fR
  45. and fIstring2fR.  Returns 1 if fIstring1fR and fIstring2fR are
  46. identical, or 0 when not.  If fB-lengthfR is specified, then only
  47. the first fIlengthfR characters are used in the comparison.  If
  48. fB-lengthfR is negative, it is ignored.  If fB-nocasefR is
  49. specified, then the strings are compared in a case-insensitive manner.
  50. .TP
  51. fBstring first fIstring1 string2fR ?fIstartIndexfR?
  52. Search fIstring2fR for a sequence of characters that exactly match
  53. the characters in fIstring1fR.  If found, return the index of the
  54. first character in the first such match within fIstring2fR.  If not
  55. found, return -1.  If fIstartIndexfR is specified (in any of the
  56. forms accepted by the fBindexfR method), then the search is
  57. constrained to start with the character in fIstring2fR specified by
  58. the index.  For example,
  59. .RS
  60. .CS
  61. fBstring first a 0a23456789abcdef 5fR
  62. .CE
  63. will return fB10fR, but
  64. .CS
  65. fBstring first a 0123456789abcdef 11fR
  66. .CE
  67. will return fB-1fR.
  68. .RE
  69. .TP
  70. fBstring index fIstring charIndexfR
  71. Returns the fIcharIndexfR'th character of the fIstringfR argument.
  72. A fIcharIndexfR of 0 corresponds to the first character of the
  73. string.  fIcharIndexfR may be specified as follows:
  74. .RS
  75. .IP fIintegerfR 10
  76. The char specified at this integral index.
  77. .IP fBendfR 10
  78. The last char of the string.
  79. .IP fBend-fIintegerfR 10
  80. The last char of the string minus the specified integer offset
  81. (e.g. fBend-1fR would refer to the "c" in "abcd").
  82. .PP
  83. If fIcharIndexfR is less than 0 or greater than or equal to the
  84. length of the string then an empty string is returned.
  85. .RE
  86. .TP
  87. fBstring is fIclassfR ?fB-strictfR? ?fB-failindex fIvarnamefR? fIstringfR
  88. Returns 1 if fIstringfR is a valid member of the specified character
  89. class, otherwise returns 0.  If fB-strictfR is specified, then an
  90. empty string returns 0, otherwise and empty string will return 1 on
  91. any class.  If fB-failindexfR is specified, then if the function
  92. returns 0, the index in the string where the class was no longer valid
  93. will be stored in the variable named fIvarnamefR.  The fIvarnamefR
  94. will not be set if the function returns 1.  The following character
  95. classes are recognized (the class name can be abbreviated):
  96. .RS
  97. .IP fBalnumfR 12
  98. Any Unicode alphabet or digit character.
  99. .IP fBalphafR 12
  100. Any Unicode alphabet character.
  101. .IP fBasciifR 12
  102. Any character with a value less than \u0080 (those that are in the
  103. 7-bit ascii range).
  104. .IP fBbooleanfR 12
  105. Any of the forms allowed to fBTcl_GetBooleanfR.
  106. .IP fBcontrolfR 12
  107. Any Unicode control character.
  108. .IP fBdigitfR 12
  109. Any Unicode digit character.  Note that this includes characters
  110. outside of the [0-9] range.
  111. .IP fBdoublefR 12
  112. Any of the valid forms for a double in Tcl, with optional surrounding
  113. whitespace.  In case of under/overflow in the value, 0 is returned and
  114. the fIvarnamefR will contain -1.
  115. .IP fBfalsefR 12
  116. Any of the forms allowed to fBTcl_GetBooleanfR where the value is
  117. false.
  118. .IP fBgraphfR 12
  119. Any Unicode printing character, except space.
  120. .IP fBintegerfR 12
  121. Any of the valid forms for an ordinary integer in Tcl, with optional
  122. surrounding whitespace.  In case of under/overflow in the value, 0 is
  123. returned and the fIvarnamefR will contain -1.
  124. .IP fBlowerfR 12
  125. Any Unicode lower case alphabet character.
  126. .IP fBprintfR 12
  127. Any Unicode printing character, including space.
  128. .IP fBpunctfR 12
  129. Any Unicode punctuation character.
  130. .IP fBspacefR 12
  131. Any Unicode space character.
  132. .IP fBtruefR 12
  133. Any of the forms allowed to fBTcl_GetBooleanfR where the value is
  134. true.
  135. .IP fBupperfR 12
  136. Any upper case alphabet character in the Unicode character set.
  137. .IP fBwordcharfR 12
  138. Any Unicode word character.  That is any alphanumeric character, and
  139. any Unicode connector punctuation characters (e.g. underscore).
  140. .IP fBxdigitfR 12
  141. Any hexadecimal digit character ([0-9A-Fa-f]).
  142. .PP
  143. In the case of fBbooleanfR, fBtruefR and fBfalsefR, if the
  144. function will return 0, then the fIvarnamefR will always be set to
  145. 0, due to the varied nature of a valid boolean value.
  146. .RE
  147. .TP
  148. fBstring last fIstring1 string2fR ?fIlastIndexfR?
  149. Search fIstring2fR for a sequence of characters that exactly match
  150. the characters in fIstring1fR.  If found, return the index of the
  151. first character in the last such match within fIstring2fR.  If there
  152. is no match, then return -1.  If fIlastIndexfR is specified (in any
  153. of the forms accepted by the fBindexfR method), then only the
  154. characters in fIstring2fR at or before the specified fIlastIndexfR
  155. will be considered by the search.  For example,
  156. .RS
  157. .CS
  158. fBstring last a 0a23456789abcdef 15fR
  159. .CE
  160. will return fB10fR, but
  161. .CS
  162. fBstring last a 0a23456789abcdef 9fR
  163. .CE
  164. will return fB1fR.
  165. .RE
  166. .TP
  167. fBstring length fIstringfR
  168. Returns a decimal string giving the number of characters in
  169. fIstringfR.  Note that this is not necessarily the same as the
  170. number of bytes used to store the string.  If the object is a
  171. ByteArray object (such as those returned from reading a binary encoded
  172. channel), then this will return the actual byte length of the object.
  173. .TP
  174. fBstring mapfR ?fB-nocasefR? fImapping stringfR
  175. Replaces substrings in fIstringfR based on the key-value pairs in
  176. fImappingfR.  fImappingfR is a list of fIkey value key value ...fR
  177. as in the form returned by fBarray getfR.  Each instance of a
  178. key in the string will be replaced with its corresponding value.  If
  179. fB-nocasefR is specified, then matching is done without regard to
  180. case differences. Both fIkeyfR and fIvaluefR may be multiple
  181. characters.  Replacement is done in an ordered manner, so the key
  182. appearing first in the list will be checked first, and so on.
  183. fIstringfR is only iterated over once, so earlier key replacements
  184. will have no affect for later key matches.  For example,
  185. .RS
  186. .CS
  187. fBstring map {abc 1 ab 2 a 3 1 0} 1abcaababcabababcfR
  188. .CE
  189. will return the string fB01321221fR.
  190. .PP
  191. Note that if an earlier fIkeyfR is a prefix of a later one, it will
  192. completely mask the later one.  So if the previous example is
  193. reordered like this,
  194. .CS
  195. fBstring map {1 0 ab 2 a 3 abc 1} 1abcaababcabababcfR
  196. .CE
  197. it will return the string fB02c322c222cfR.
  198. .RE
  199. .TP
  200. fBstring matchfR ?fB-nocasefR? fIpatternfR fIstringfR
  201. See if fIpatternfR matches fIstringfR; return 1 if it does, 0 if
  202. it doesn't.  If fB-nocasefR is specified, then the pattern attempts
  203. to match against the string in a case insensitive manner.  For the two
  204. strings to match, their contents must be identical except that the
  205. following special sequences may appear in fIpatternfR:
  206. .RS
  207. .IP fB*fR 10
  208. Matches any sequence of characters in fIstringfR, including a null
  209. string.
  210. .IP fB?fR 10
  211. Matches any single character in fIstringfR.
  212. .IP fB[fIcharsfB]fR 10
  213. Matches any character in the set given by fIcharsfR.  If a sequence
  214. of the form fIxfB-fIyfR appears in fIcharsfR, then any
  215. character between fIxfR and fIyfR, inclusive, will match.  When
  216. used with fB-nocasefR, the end points of the range are converted to
  217. lower case first.  Whereas {[A-z]} matches '_' when matching
  218. case-sensitively ('_' falls between the 'Z' and 'a'), with
  219. fB-nocasefR this is considered like {[A-Za-z]} (and probably what
  220. was meant in the first place).
  221. .IP fBefIxfR 10
  222. Matches the single character fIxfR.  This provides a way of avoiding
  223. the special interpretation of the characters fB*?[]efR in
  224. fIpatternfR.
  225. .RE
  226. .TP
  227. fBstring range fIstring first lastfR
  228. Returns a range of consecutive characters from fIstringfR, starting
  229. with the character whose index is fIfirstfR and ending with the
  230. character whose index is fIlastfR. An index of 0 refers to the first
  231. character of the string.  fIfirstfR and fIlastfR may be specified
  232. as for the fBindexfR method.  If fIfirstfR is less than zero then
  233. it is treated as if it were zero, and if fIlastfR is greater than or
  234. equal to the length of the string then it is treated as if it were
  235. fBendfR.  If fIfirstfR is greater than fIlastfR then an empty
  236. string is returned.
  237. .TP
  238. fBstring repeat fIstring countfR
  239. Returns fIstringfR repeated fIcountfR number of times.
  240. .TP
  241. fBstring replace fIstring first lastfR ?fInewstringfR?
  242. Removes a range of consecutive characters from fIstringfR, starting
  243. with the character whose index is fIfirstfR and ending with the
  244. character whose index is fIlastfR.  An index of 0 refers to the
  245. first character of the string.  fIFirstfR and fIlastfR may be
  246. specified as for the fBindexfR method.  If fInewstringfR is
  247. specified, then it is placed in the removed character range.  If
  248. fIfirstfR is less than zero then it is treated as if it were zero,
  249. and if fIlastfR is greater than or equal to the length of the string
  250. then it is treated as if it were fBendfR.  If fIfirstfR is greater
  251. than fIlastfR or the length of the initial string, or fIlastfR is
  252. less than 0, then the initial string is returned untouched.
  253. .TP
  254. fBstring tolower fIstringfR ?fIfirstfR? ?fIlastfR?
  255. Returns a value equal to fIstringfR except that all upper (or title)
  256. case letters have been converted to lower case.  If fIfirstfR is
  257. specified, it refers to the first char index in the string to start
  258. modifying.  If fIlastfR is specified, it refers to the char index in
  259. the string to stop at (inclusive).  fIfirstfR and fIlastfR may be
  260. specified as for the fBindexfR method.
  261. .TP
  262. fBstring totitle fIstringfR ?fIfirstfR? ?fIlastfR?
  263. Returns a value equal to fIstringfR except that the first character
  264. in fIstringfR is converted to its Unicode title case variant (or
  265. upper case if there is no title case variant) and the rest of the
  266. string is converted to lower case.  If fIfirstfR is specified, it
  267. refers to the first char index in the string to start modifying.  If
  268. fIlastfR is specified, it refers to the char index in the string to
  269. stop at (inclusive).  fIfirstfR and fIlastfR may be specified as
  270. for the fBindexfR method.
  271. .TP
  272. fBstring toupper fIstringfR ?fIfirstfR? ?fIlastfR?
  273. Returns a value equal to fIstringfR except that all lower (or title)
  274. case letters have been converted to upper case.  If fIfirstfR is
  275. specified, it refers to the first char index in the string to start
  276. modifying.  If fIlastfR is specified, it refers to the char index in
  277. the string to stop at (inclusive).  fIfirstfR and fIlastfR may be
  278. specified as for the fBindexfR method.
  279. .TP
  280. fBstring trim fIstringfR ?fIcharsfR?
  281. Returns a value equal to fIstringfR except that any leading or
  282. trailing characters from the set given by fIcharsfR are removed.  If
  283. fIcharsfR is not specified then white space is removed (spaces,
  284. tabs, newlines, and carriage returns).
  285. .TP
  286. fBstring trimleft fIstringfR ?fIcharsfR?
  287. Returns a value equal to fIstringfR except that any leading
  288. characters from the set given by fIcharsfR are removed.  If
  289. fIcharsfR is not specified then white space is removed (spaces,
  290. tabs, newlines, and carriage returns).
  291. .TP
  292. fBstring trimright fIstringfR ?fIcharsfR?
  293. Returns a value equal to fIstringfR except that any trailing
  294. characters from the set given by fIcharsfR are removed.  If
  295. fIcharsfR is not specified then white space is removed (spaces,
  296. tabs, newlines, and carriage returns).
  297. .TP
  298. fBstring wordend fIstring charIndexfR
  299. Returns the index of the character just after the last one in the word
  300. containing character fIcharIndexfR of fIstringfR.  fIcharIndexfR
  301. may be specified as for the fBindexfR method.  A word is
  302. considered to be any contiguous range of alphanumeric (Unicode letters
  303. or decimal digits) or underscore (Unicode connector punctuation)
  304. characters, or any single character other than these.
  305. .TP
  306. fBstring wordstart fIstring charIndexfR
  307. Returns the index of the first character in the word containing
  308. character fIcharIndexfR of fIstringfR.  fIcharIndexfR may be
  309. specified as for the fBindexfR method.  A word is considered to be any
  310. contiguous range of alphanumeric (Unicode letters or decimal digits)
  311. or underscore (Unicode connector punctuation) characters, or any
  312. single character other than these.
  313. .SH EXAMPLE
  314. Test if the string in the variable fIstringfR is a proper non-empty
  315. prefix of the string fBfoobarfR.
  316. .CS
  317. set length [fBstring lengthfR $string]
  318. if {$length == 0} {
  319.    set isPrefix 0
  320. } else {
  321.    set isPrefix [fBstring equalfR -length $length $string "foobar"]
  322. }
  323. .CE
  324. .SH "SEE ALSO"
  325. expr(n), list(n)
  326. .SH KEYWORDS
  327. case conversion, compare, index, match, pattern, string, word, equal, ctype