Golang每日一练(leetDay0066) 有效电话号码、转置文件
目录
193. 有效电话号码 Valid Phone Numbers 🌟
194. 转置文件 Transpose File 🌟🌟
🌟 每日一练刷题专栏 🌟
Golang每日一练 专栏
Python每日一练 专栏
C/C++每日一练 专栏
Java每日一练 专栏
193. 有效电话号码 Valid Phone Numbers
给定一个文本文件 file.txt
,请只打印这个文件中的第十行。
示例:
假设 file.txt
有如下内容:
Line 1 Line 2 Line 3 Line 4 Line 5 Line 6 Line 7 Line 8 Line 9 Line 10
你的脚本应当显示第十行:
Line 10
说明:
1. 如果文件少于十行,你应当输出什么?
2. 至少有三种不同的解法,请尝试尽可能多的方法来解题。
代码:
package mainimport ("bufio""fmt""os"
)func main() {file, err := os.Open("file.txt")if err != nil {fmt.Println(err)return}defer file.Close()scanner := bufio.NewScanner(file)lineNum := 0for scanner.Scan() {lineNum++if lineNum == 10 {fmt.Println(scanner.Text())break}}if err := scanner.Err(); err != nil {fmt.Println(err)}
}
调用系统命令:
awk 'NR==10{print}' file.txt
或: sed -n '10p' file.txt
调用代码:
package mainimport ("fmt""os/exec"
)func main() {cmd := exec.Command("awk", "NR==10{print}", "file.txt")//或 cmd := exec.Command("sed", "-n", "10p", "file.txt")output, err := cmd.Output()if err != nil {fmt.Println(err)}fmt.Print(string(output))
}
194. 转置文件 Transpose File
给定一个文件 file.txt
,转置它的内容。
你可以假设每行列数相同,并且每个字段由 ' '
分隔。
示例:
假设 file.txt
文件内容如下:
name age alice 21 ryan 30
应当输出:
name alice ryan age 21 30
代码:
package mainimport ("bufio""fmt""os""strings"
)func main() {// 打开文件file, err := os.Open("file.txt")if err != nil {fmt.Println(err)return}defer file.Close()// 逐行处理文件,并将处理结果存入二维切片中scanner := bufio.NewScanner(file)wordsSlice := make([][]string, 0)for scanner.Scan() {words := strings.Fields(scanner.Text())wordsSlice = append(wordsSlice, words)}// 构建列向量切片并打印for col := 0; col < len(wordsSlice[0]); col++ {colWords := make([]string, 0)for row := 0; row < len(wordsSlice); row++ {colWords = append(colWords, wordsSlice[row][col])}fmt.Println(strings.Join(colWords, " "))}
}
调用系统命令:
awk 'BEGIN{FS="\t"}{for(i=1;i<=NF;i++){arr[i]=arr[i]" "$i}}END{for(i=1;i<=NF;i++){print substr(arr[i], 2)}}' file.txt
调用代码:
package mainimport ("bufio""fmt""os/exec""strings"
)func main() {cmd1 := exec.Command("awk", "BEGIN{FS=\"\\t\"}{for(i=1;i<=NF;i++){arr[i]=arr[i]\" \"$i}}END{for(i=1;i<=NF;i++){print substr(arr[i], 2)}}" , "file.txt")output, err := cmd1.Output()if err != nil {fmt.Println(err)return}scanner := bufio.NewScanner(strings.NewReader(string(output)))for scanner.Scan() {fmt.Println(scanner.Text())}if err := scanner.Err(); err != nil {fmt.Println(err)}
}
🌟 每日一练刷题专栏 🌟
✨ 持续,努力奋斗做强刷题搬运工!
👍 点赞,你的认可是我坚持的动力!
🌟 收藏,你的青睐是我努力的方向!
✎ 评论,你的意见是我进步的财富!
☸ 主页:https://hannyang.blog.csdn.net/
![]() | Golang每日一练 专栏 |
![]() | Python每日一练 专栏 |
![]() | C/C++每日一练 专栏 |
![]() | Java每日一练 专栏 |