1
0
mirror of https://github.com/golang/go synced 2024-11-13 19:00:25 -07:00

all: replace strings.Index with strings.Contains where possible

Change-Id: Ia613f1c37bfce800ece0533a5326fca91d99a66a
Reviewed-on: https://go-review.googlesource.com/18120
Reviewed-by: Robert Griesemer <gri@golang.org>
Run-TryBot: Robert Griesemer <gri@golang.org>
This commit is contained in:
Nathan VanBenschoten 2015-12-22 02:40:47 -05:00 committed by Russ Cox
parent 952c2fd606
commit b04f3b06ec
26 changed files with 38 additions and 38 deletions

View File

@ -15,7 +15,7 @@ import (
) )
func ratTok(ch rune) bool { func ratTok(ch rune) bool {
return strings.IndexRune("+-/0123456789.eE", ch) >= 0 return strings.ContainsRune("+-/0123456789.eE", ch)
} }
// Scan is a support routine for fmt.Scanner. It accepts the formats // Scan is a support routine for fmt.Scanner. It accepts the formats
@ -25,7 +25,7 @@ func (z *Rat) Scan(s fmt.ScanState, ch rune) error {
if err != nil { if err != nil {
return err return err
} }
if strings.IndexRune("efgEFGv", ch) < 0 { if !strings.ContainsRune("efgEFGv", ch) {
return errors.New("Rat.Scan: invalid verb") return errors.New("Rat.Scan: invalid verb")
} }
if _, ok := z.SetString(string(tok)); !ok { if _, ok := z.SetString(string(tok)); !ok {

View File

@ -877,7 +877,7 @@ func (p *exporter) byte(b byte) {
// tracef is like fmt.Printf but it rewrites the format string // tracef is like fmt.Printf but it rewrites the format string
// to take care of indentation. // to take care of indentation.
func (p *exporter) tracef(format string, args ...interface{}) { func (p *exporter) tracef(format string, args ...interface{}) {
if strings.IndexAny(format, "<>\n") >= 0 { if strings.ContainsAny(format, "<>\n") {
var buf bytes.Buffer var buf bytes.Buffer
for i := 0; i < len(format); i++ { for i := 0; i < len(format); i++ {
// no need to deal with runes // no need to deal with runes

View File

@ -130,7 +130,7 @@ func (w *Writer) fieldNeedsQuotes(field string) bool {
if field == "" { if field == "" {
return false return false
} }
if field == `\.` || strings.IndexRune(field, w.Comma) >= 0 || strings.IndexAny(field, "\"\r\n") >= 0 { if field == `\.` || strings.ContainsRune(field, w.Comma) || strings.ContainsAny(field, "\"\r\n") {
return true return true
} }

View File

@ -970,7 +970,7 @@ func TestBadRecursiveType(t *testing.T) {
err := NewEncoder(b).Encode(&rec) err := NewEncoder(b).Encode(&rec)
if err == nil { if err == nil {
t.Error("expected error; got none") t.Error("expected error; got none")
} else if strings.Index(err.Error(), "recursive") < 0 { } else if !strings.Contains(err.Error(), "recursive") {
t.Error("expected recursive type error; got", err) t.Error("expected recursive type error; got", err)
} }
// Can't test decode easily because we can't encode one, so we can't pass one to a Decoder. // Can't test decode easily because we can't encode one, so we can't pass one to a Decoder.

View File

@ -280,7 +280,7 @@ func TestValueError(t *testing.T) {
} }
t4p := &Type4{3} t4p := &Type4{3}
var t4 Type4 // note: not a pointer. var t4 Type4 // note: not a pointer.
if err := encAndDec(t4p, t4); err == nil || strings.Index(err.Error(), "pointer") < 0 { if err := encAndDec(t4p, t4); err == nil || !strings.Contains(err.Error(), "pointer") {
t.Error("expected error about pointer; got", err) t.Error("expected error about pointer; got", err)
} }
} }
@ -388,7 +388,7 @@ func TestSingletons(t *testing.T) {
t.Errorf("expected error decoding %v: %s", test.in, test.err) t.Errorf("expected error decoding %v: %s", test.in, test.err)
continue continue
case err != nil && test.err != "": case err != nil && test.err != "":
if strings.Index(err.Error(), test.err) < 0 { if !strings.Contains(err.Error(), test.err) {
t.Errorf("wrong error decoding %v: wanted %s, got %v", test.in, test.err, err) t.Errorf("wrong error decoding %v: wanted %s, got %v", test.in, test.err, err)
} }
continue continue
@ -414,7 +414,7 @@ func TestStructNonStruct(t *testing.T) {
var ns NonStruct var ns NonStruct
if err := encAndDec(s, &ns); err == nil { if err := encAndDec(s, &ns); err == nil {
t.Error("should get error for struct/non-struct") t.Error("should get error for struct/non-struct")
} else if strings.Index(err.Error(), "type") < 0 { } else if !strings.Contains(err.Error(), "type") {
t.Error("for struct/non-struct expected type error; got", err) t.Error("for struct/non-struct expected type error; got", err)
} }
// Now try the other way // Now try the other way
@ -424,7 +424,7 @@ func TestStructNonStruct(t *testing.T) {
} }
if err := encAndDec(ns, &s); err == nil { if err := encAndDec(ns, &s); err == nil {
t.Error("should get error for non-struct/struct") t.Error("should get error for non-struct/struct")
} else if strings.Index(err.Error(), "type") < 0 { } else if !strings.Contains(err.Error(), "type") {
t.Error("for non-struct/struct expected type error; got", err) t.Error("for non-struct/struct expected type error; got", err)
} }
} }

View File

@ -548,7 +548,7 @@ func TestGobEncoderFieldTypeError(t *testing.T) {
if err == nil { if err == nil {
t.Fatal("expected decode error for mismatched fields (encoder to non-decoder)") t.Fatal("expected decode error for mismatched fields (encoder to non-decoder)")
} }
if strings.Index(err.Error(), "type") < 0 { if !strings.Contains(err.Error(), "type") {
t.Fatal("expected type error; got", err) t.Fatal("expected type error; got", err)
} }
// Non-encoder to GobDecoder: error // Non-encoder to GobDecoder: error
@ -562,7 +562,7 @@ func TestGobEncoderFieldTypeError(t *testing.T) {
if err == nil { if err == nil {
t.Fatal("expected decode error for mismatched fields (non-encoder to decoder)") t.Fatal("expected decode error for mismatched fields (non-encoder to decoder)")
} }
if strings.Index(err.Error(), "type") < 0 { if !strings.Contains(err.Error(), "type") {
t.Fatal("expected type error; got", err) t.Fatal("expected type error; got", err)
} }
} }

View File

@ -850,7 +850,7 @@ func (p *printer) marshalStruct(tinfo *typeInfo, val reflect.Value) error {
switch k { switch k {
case reflect.String: case reflect.String:
s := vf.String() s := vf.String()
dashDash = strings.Index(s, "--") >= 0 dashDash = strings.Contains(s, "--")
dashLast = s[len(s)-1] == '-' dashLast = s[len(s)-1] == '-'
if !dashDash { if !dashDash {
p.WriteString(s) p.WriteString(s)

View File

@ -519,7 +519,7 @@ func testScanfMulti(name string, t *testing.T) {
if err != nil { if err != nil {
if test.err == "" { if test.err == "" {
t.Errorf("got error scanning (%q, %q): %q", test.format, test.text, err) t.Errorf("got error scanning (%q, %q): %q", test.format, test.text, err)
} else if strings.Index(err.Error(), test.err) < 0 { } else if !strings.Contains(err.Error(), test.err) {
t.Errorf("got wrong error scanning (%q, %q): %q; expected %q", test.format, test.text, err, test.err) t.Errorf("got wrong error scanning (%q, %q): %q; expected %q", test.format, test.text, err, test.err)
} }
continue continue
@ -613,7 +613,7 @@ func TestScanNotPointer(t *testing.T) {
_, err := Fscan(r, a) _, err := Fscan(r, a)
if err == nil { if err == nil {
t.Error("expected error scanning non-pointer") t.Error("expected error scanning non-pointer")
} else if strings.Index(err.Error(), "pointer") < 0 { } else if !strings.Contains(err.Error(), "pointer") {
t.Errorf("expected pointer error scanning non-pointer, got: %s", err) t.Errorf("expected pointer error scanning non-pointer, got: %s", err)
} }
} }
@ -623,7 +623,7 @@ func TestScanlnNoNewline(t *testing.T) {
_, err := Sscanln("1 x\n", &a) _, err := Sscanln("1 x\n", &a)
if err == nil { if err == nil {
t.Error("expected error scanning string missing newline") t.Error("expected error scanning string missing newline")
} else if strings.Index(err.Error(), "newline") < 0 { } else if !strings.Contains(err.Error(), "newline") {
t.Errorf("expected newline error scanning string missing newline, got: %s", err) t.Errorf("expected newline error scanning string missing newline, got: %s", err)
} }
} }
@ -634,7 +634,7 @@ func TestScanlnWithMiddleNewline(t *testing.T) {
_, err := Fscanln(r, &a, &b) _, err := Fscanln(r, &a, &b)
if err == nil { if err == nil {
t.Error("expected error scanning string with extra newline") t.Error("expected error scanning string with extra newline")
} else if strings.Index(err.Error(), "newline") < 0 { } else if !strings.Contains(err.Error(), "newline") {
t.Errorf("expected newline error scanning string with extra newline, got: %s", err) t.Errorf("expected newline error scanning string with extra newline, got: %s", err)
} }
} }

View File

@ -225,7 +225,7 @@ func heading(line string) string {
} }
// exclude lines with illegal characters // exclude lines with illegal characters
if strings.IndexAny(line, ",.;:!?+*/=()[]{}_^°&§~%#@<\">\\") >= 0 { if strings.ContainsAny(line, ",.;:!?+*/=()[]{}_^°&§~%#@<\">\\") {
return "" return ""
} }

View File

@ -196,7 +196,7 @@ func init() {
// //
func def(obj Object) { func def(obj Object) {
name := obj.Name() name := obj.Name()
if strings.Index(name, " ") >= 0 { if strings.Contains(name, " ") {
return // nothing to do return // nothing to do
} }
// fix Obj link for named types // fix Obj link for named types

View File

@ -15,7 +15,7 @@ import (
) )
func ratTok(ch rune) bool { func ratTok(ch rune) bool {
return strings.IndexRune("+-/0123456789.eE", ch) >= 0 return strings.ContainsRune("+-/0123456789.eE", ch)
} }
// Scan is a support routine for fmt.Scanner. It accepts the formats // Scan is a support routine for fmt.Scanner. It accepts the formats
@ -25,7 +25,7 @@ func (z *Rat) Scan(s fmt.ScanState, ch rune) error {
if err != nil { if err != nil {
return err return err
} }
if strings.IndexRune("efgEFGv", ch) < 0 { if !strings.ContainsRune("efgEFGv", ch) {
return errors.New("Rat.Scan: invalid verb") return errors.New("Rat.Scan: invalid verb")
} }
if _, ok := z.SetString(string(tok)); !ok { if _, ok := z.SetString(string(tok)); !ok {

View File

@ -11,7 +11,7 @@ import (
// isTSpecial reports whether rune is in 'tspecials' as defined by RFC // isTSpecial reports whether rune is in 'tspecials' as defined by RFC
// 1521 and RFC 2045. // 1521 and RFC 2045.
func isTSpecial(r rune) bool { func isTSpecial(r rune) bool {
return strings.IndexRune(`()<>@,;:\"/[]?=`, r) != -1 return strings.ContainsRune(`()<>@,;:\"/[]?=`, r)
} }
// isTokenChar reports whether rune is in 'token' as defined by RFC // isTokenChar reports whether rune is in 'token' as defined by RFC

View File

@ -34,7 +34,7 @@ import (
type Dir string type Dir string
func (d Dir) Open(name string) (File, error) { func (d Dir) Open(name string) (File, error) {
if filepath.Separator != '/' && strings.IndexRune(name, filepath.Separator) >= 0 || if filepath.Separator != '/' && strings.ContainsRune(name, filepath.Separator) ||
strings.Contains(name, "\x00") { strings.Contains(name, "\x00") {
return nil, errors.New("http: invalid character in file path") return nil, errors.New("http: invalid character in file path")
} }

View File

@ -183,7 +183,7 @@ func testRPC(t *testing.T, addr string) {
err = client.Call("Arith.Unknown", args, reply) err = client.Call("Arith.Unknown", args, reply)
if err == nil { if err == nil {
t.Error("expected error calling unknown service") t.Error("expected error calling unknown service")
} else if strings.Index(err.Error(), "method") < 0 { } else if !strings.Contains(err.Error(), "method") {
t.Error("expected error about method; got", err) t.Error("expected error about method; got", err)
} }
@ -226,7 +226,7 @@ func testRPC(t *testing.T, addr string) {
err = client.Call("Arith.Add", reply, reply) // args, reply would be the correct thing to use err = client.Call("Arith.Add", reply, reply) // args, reply would be the correct thing to use
if err == nil { if err == nil {
t.Error("expected error calling Arith.Add with wrong arg type") t.Error("expected error calling Arith.Add with wrong arg type")
} else if strings.Index(err.Error(), "type") < 0 { } else if !strings.Contains(err.Error(), "type") {
t.Error("expected error about type; got", err) t.Error("expected error about type; got", err)
} }

View File

@ -511,7 +511,7 @@ func parseAuthority(authority string) (user *Userinfo, host string, err error) {
return nil, host, nil return nil, host, nil
} }
userinfo := authority[:i] userinfo := authority[:i]
if strings.Index(userinfo, ":") < 0 { if !strings.Contains(userinfo, ":") {
if userinfo, err = unescape(userinfo, encodeUserPassword); err != nil { if userinfo, err = unescape(userinfo, encodeUserPassword); err != nil {
return nil, "", err return nil, "", err
} }

View File

@ -70,7 +70,7 @@ func LookPath(file string) (f string, err error) {
} }
exts = append(exts, e) exts = append(exts, e)
} }
if strings.IndexAny(file, `:\/`) != -1 { if strings.ContainsAny(file, `:\/`) {
if f, err = findExecutable(file, exts); err == nil { if f, err = findExecutable(file, exts); err == nil {
return return
} }

View File

@ -49,7 +49,7 @@ Pattern:
star, chunk, pattern = scanChunk(pattern) star, chunk, pattern = scanChunk(pattern)
if star && chunk == "" { if star && chunk == "" {
// Trailing * matches rest of string unless it has a /. // Trailing * matches rest of string unless it has a /.
return strings.Index(name, string(Separator)) < 0, nil return !strings.Contains(name, string(Separator)), nil
} }
// Look for match at current position. // Look for match at current position.
t, ok, err := matchChunk(chunk, name) t, ok, err := matchChunk(chunk, name)
@ -305,5 +305,5 @@ func glob(dir, pattern string, matches []string) (m []string, e error) {
// recognized by Match. // recognized by Match.
func hasMeta(path string) bool { func hasMeta(path string) bool {
// TODO(niemeyer): Should other magic characters be added here? // TODO(niemeyer): Should other magic characters be added here?
return strings.IndexAny(path, "*?[") >= 0 return strings.ContainsAny(path, "*?[")
} }

View File

@ -88,7 +88,7 @@ func TestMatch(t *testing.T) {
pattern := tt.pattern pattern := tt.pattern
s := tt.s s := tt.s
if runtime.GOOS == "windows" { if runtime.GOOS == "windows" {
if strings.Index(pattern, "\\") >= 0 { if strings.Contains(pattern, "\\") {
// no escape allowed on windows. // no escape allowed on windows.
continue continue
} }

View File

@ -43,7 +43,7 @@ Pattern:
star, chunk, pattern = scanChunk(pattern) star, chunk, pattern = scanChunk(pattern)
if star && chunk == "" { if star && chunk == "" {
// Trailing * matches rest of string unless it has a /. // Trailing * matches rest of string unless it has a /.
return strings.Index(name, "/") < 0, nil return !strings.Contains(name, "/"), nil
} }
// Look for match at current position. // Look for match at current position.
t, ok, err := matchChunk(chunk, name) t, ok, err := matchChunk(chunk, name)

View File

@ -454,7 +454,7 @@ func Match(pattern string, b []byte) (matched bool, err error) {
// in Expand, so for instance $1 represents the text of the first submatch. // in Expand, so for instance $1 represents the text of the first submatch.
func (re *Regexp) ReplaceAllString(src, repl string) string { func (re *Regexp) ReplaceAllString(src, repl string) string {
n := 2 n := 2
if strings.Index(repl, "$") >= 0 { if strings.Contains(repl, "$") {
n = 2 * (re.numSubexp + 1) n = 2 * (re.numSubexp + 1)
} }
b := re.replaceAll(nil, src, n, func(dst []byte, match []int) []byte { b := re.replaceAll(nil, src, n, func(dst []byte, match []int) []byte {

View File

@ -252,7 +252,7 @@ const meta = `\.+*?()|[]{}^$`
func escape(b *bytes.Buffer, r rune, force bool) { func escape(b *bytes.Buffer, r rune, force bool) {
if unicode.IsPrint(r) { if unicode.IsPrint(r) {
if strings.IndexRune(meta, r) >= 0 || force { if strings.ContainsRune(meta, r) || force {
b.WriteRune('\\') b.WriteRune('\\')
} }
b.WriteRune(r) b.WriteRune(r)

View File

@ -59,7 +59,7 @@ func TestStack(t *testing.T) {
} }
func check(t *testing.T, line, has string) { func check(t *testing.T, line, has string) {
if strings.Index(line, has) < 0 { if !strings.Contains(line, has) {
t.Errorf("expected %q in %q", has, line) t.Errorf("expected %q in %q", has, line)
} }
} }

View File

@ -446,7 +446,7 @@ func (s *state) idealConstant(constant *parse.NumberNode) reflect.Value {
switch { switch {
case constant.IsComplex: case constant.IsComplex:
return reflect.ValueOf(constant.Complex128) // incontrovertible. return reflect.ValueOf(constant.Complex128) // incontrovertible.
case constant.IsFloat && !isHexConstant(constant.Text) && strings.IndexAny(constant.Text, ".eE") >= 0: case constant.IsFloat && !isHexConstant(constant.Text) && strings.ContainsAny(constant.Text, ".eE"):
return reflect.ValueOf(constant.Float64) return reflect.ValueOf(constant.Float64)
case constant.IsInt: case constant.IsInt:
n := int(constant.Int64) n := int(constant.Int64)

View File

@ -515,7 +515,7 @@ func HTMLEscape(w io.Writer, b []byte) {
// HTMLEscapeString returns the escaped HTML equivalent of the plain text data s. // HTMLEscapeString returns the escaped HTML equivalent of the plain text data s.
func HTMLEscapeString(s string) string { func HTMLEscapeString(s string) string {
// Avoid allocation if we can. // Avoid allocation if we can.
if strings.IndexAny(s, `'"&<>`) < 0 { if !strings.ContainsAny(s, `'"&<>`) {
return s return s
} }
var b bytes.Buffer var b bytes.Buffer

View File

@ -155,7 +155,7 @@ func (l *lexer) ignore() {
// accept consumes the next rune if it's from the valid set. // accept consumes the next rune if it's from the valid set.
func (l *lexer) accept(valid string) bool { func (l *lexer) accept(valid string) bool {
if strings.IndexRune(valid, l.next()) >= 0 { if strings.ContainsRune(valid, l.next()) {
return true return true
} }
l.backup() l.backup()
@ -164,7 +164,7 @@ func (l *lexer) accept(valid string) bool {
// acceptRun consumes a run of runes from the valid set. // acceptRun consumes a run of runes from the valid set.
func (l *lexer) acceptRun(valid string) { func (l *lexer) acceptRun(valid string) {
for strings.IndexRune(valid, l.next()) >= 0 { for strings.ContainsRune(valid, l.next()) {
} }
l.backup() l.backup()
} }

View File

@ -447,7 +447,7 @@ func TestParseErrors(t *testing.T) {
_, err := Parse(test.format, test.value) _, err := Parse(test.format, test.value)
if err == nil { if err == nil {
t.Errorf("expected error for %q %q", test.format, test.value) t.Errorf("expected error for %q %q", test.format, test.value)
} else if strings.Index(err.Error(), test.expect) < 0 { } else if !strings.Contains(err.Error(), test.expect) {
t.Errorf("expected error with %q for %q %q; got %s", test.expect, test.format, test.value, err) t.Errorf("expected error with %q for %q %q; got %s", test.expect, test.format, test.value, err)
} }
} }