
我正在编写一个程序,在 .txt 文件中逐行获取用户名,并验证用户名是否在其中。然后,我创建了一个切片并将文件转换为字符串并将其附加到字符串切片中。我现在尝试使用 for 循环遍历切片,以查找文件中的用户名,并将其与包含该用户名的另一个字符串变量进行比较。我想检查一下它是否在切片中。做这个的最好方式是什么?我尝试使用切片的 for 循环将范围内的元素与我想要检查的用户名的变量进行比较,但它不起作用。因此,换句话说,我想找出获取一个 txt 文件的最佳方法,该文件包含从上到下添加的用户名列表,让我的程序从该文本文件中读取(循环),并将其与将字符串变量中的预定项(用户名)与文本文件中的内容进行比较,并确定其是否匹配。
用户名(字符串变量)==用户名(文本文件中)
*用户名变量也将基于程序用户输入的内容。因此,我试图最终检查当用户输入用户名时程序是否会验证它是否在文件中。谢谢。
我尝试过的代码示例:
var readSystemCtl []string
readSystemCtl = append(readSystemCtl, string(file))
for _, username := range of readSystemCtl {
if username == input {
//Continue program if true
break
}else {
//Do something else
}
}注意: string(file) 是我要读取的文本文件; input 是用户为其用户名输入的字符串变量,该用户名是在程序中预先确定的。
如果您是新用户,请直接将本程序的所有文件上传在任一文件夹下,Rewrite 目录下放置了伪静态规则和筛选器,可将规则添加进IIS,即可正常使用,不用进行任何设置;(可修改图片等)默认的管理员用户名、密码和验证码都是:yeesen系统默认关闭,请上传后登陆后台点击“核心管理”里操作如下:进入“配置管理”中的&ld
0
作为一名 go 程序员,我很快将您的整体应用需求翻译成了 go 程序。然后我将其与您的代码进行了比较。我不明白为什么你使用 go 切片的线性搜索。为什么不使用随机访问 go 地图?
在比较用户名是否相等之前,请修剪空格 (strings.trimspace),并且为了不区分大小写,将其转换为小写 (strings.tolower)。
users.go
package main
import (
"bufio"
"fmt"
"io"
"os"
"strings"
)
func loadusers(r io.reader) (map[string]bool, error) {
users := make(map[string]bool)
scnr := bufio.newscanner(r)
for scnr.scan() {
user := strings.trimspace(scnr.text())
if len(user) > 0 {
user = strings.tolower(user)
users[user] = true
}
}
if err := scnr.err(); err != nil {
return nil, err
}
return users, nil
}
func loadusersfile(name string) (map[string]bool, error) {
f, err := os.open(name)
if err != nil {
return nil, err
}
defer f.close()
users, err := loadusers(f)
if err != nil {
return nil, err
}
return users, nil
}
func isuser(users map[string]bool, user string) bool {
user = strings.trimspace(user)
user = strings.tolower(user)
return users[user]
}
func main() {
users, err := loadusersfile("users.txt")
if err != nil {
fmt.fprintln(os.stderr, err)
os.exit(1)
}
scnr := bufio.newscanner(os.stdin)
for scnr.scan() {
user := scnr.text()
fmt.print("user: ", user)
if isuser(users, user) {
fmt.println(" found")
} else {
fmt.println(" not found")
}
}
if err := scnr.err(); err != nil {
fmt.fprintln(os.stderr, err)
os.exit(1)
}
}$ cat users.txt username1 Username2 UserName3 $ go build users.go $ ./users User Name X User: User Name X not found username3 User: username3 found $
以上就是将文本文件放入切片然后比较的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号