'''string first''' ''string1 string2 ?startIndex?'' Search ''string2'' for a sequence of characters that exactly match the characters in ''string1''. If found, return the index of the first character in the first such match within ''string2''. If not found, return '''-1'''. If ''startIndex'' is specified (in any of the forms accepted by the '''index''' method), then the search is constrained to start with the character in ''string2'' specified by the index. For example, string first a 0a23456789abcdef 5 will return '''10''', but string first a 0123456789abcdef 11 will return '''-1'''. ---- Example: string first a 0a23456789abcdef returns 1 (notice this is again a '''zero''' based value). string first "a" "0a23456789abcdef" 5 returns 10. This example uses the startIndex to indicate that the searching should begin at the fifth character (a 4 in the example). ''However'' the result is still a zero based index from the '''beginning''' of the string! string first a 0123456789abcdef 11 returns a '''-1''', the standard return if the string being sought is not found. An error is generated if the index is not an integer or end?-integer?. ---- A wish for Tcl 8.5+ or 9.0 Somehow let string first be flagged -nocase. Perhaps allowing the flag at the end where it can't be confused with and can co-exist with the starting index. Alternatively: allow [string match] to return the index at which the match occurred. -- [Roy Terry], 7 January, 2004 -- [RS] same day: Isn't that duplicating what we have in regexp -nocase -start 11 -inline a 0123456789abcdef Sure it is and the desire is for efficiency and also the consistency of having more string commands respect no case. There is already huge overlap between what you can do with string and regexp. In fact, you could surely write all the string commands in pure Tcl using regexp, regsub. - Roy ---- See also: * [string] * [string index] * [string last] ---- [Tcl syntax help] - [Category Command] - [Category String Processing]