string - strings.Contains() 总是返回 false
问题描述
在 Go 中,我想检查以下字符串是否包含text/plain
在字符串中。函数strings.Contains()总是返回false
。
我的本地 go 版本是go1.14.3 windows/amd64,我的服务器版本是go1.13.3 linux/amd64
测试代码(play.golang.org/p/_ikCzWd6438)
var test = "text/plain; charset=utf-8"
fmt.Println("my string:", test)
fmt.Println("strings.Contains(text/plain)", strings.Contains("text/plain", test))
fmt.Println("strings.Contains(text)", strings.Contains("text", test))
fmt.Println("strings.Contains(charset)", strings.Contains("charset", test))
var test2 = strings.ReplaceAll(test, "/", "") // remove slash
fmt.Println("my second string:", test2)
fmt.Println("strings.Contains(textplain)", strings.Contains("textplain", test2))
fmt.Println("strings.Contains(text)", strings.Contains("text", test2))
fmt.Println("strings.Contains(charset)", strings.Contains("charset", test2))
输出
my string: text/plain; charset=utf-8
strings.Contains(text/plain) false
strings.Contains(text) false
strings.Contains(charset) false
my second string: textplain; charset=utf-8
strings.Contains(textplain) false
strings.Contains(text) false
strings.Contains(charset) false
那么为什么strings.Contains()
总是返回'false'?
解决方案
根据文档:
func Contains(s, substr string) bool
包含报告 substr 是否在 s 内。
第一个参数s
是原始字符串,第二个参数是substr
您要搜索的子字符串。在你的情况下,情况正好相反。
例如,而不是strings.Contains("charset", test)
,它应该是strings.Contains(test, "charset")
推荐阅读
- dialogflow-es - 什么可能导致自定义回退意图不被触发?
- java - 从十六进制获取 Unicode
- java - 是否可以在同一个项目中使用 Postgres 和 Oracle?
- javascript - Select2:使用 ajax 创建标签
- azure - 超大规模数据库上 New-AzSqlDatabaseCopy 的替代方案
- vue.js - 使用 Vue.JS 时,我们是否被迫在 CSP 中使用“unsafe-inline”?
- github - 从 GitHub 下载目录
- java - Android Studio Request App Permissions cant compile 显示错误:缺少数组维度
- c - 如何设置有理数小数展开的精度级别
- javascript - 反应钩子:无法更新功能组件内的状态