Go 分割字符串 案例01

文章介绍了一个使用Go语言处理含有双引号的log日志文件的例子,按照特定规则(双引号内不切分,双引号外的空格作为分隔符)将日志行切分成数组。代码示例展示了如何遍历字符串,识别双引号内外的内容并正确分割。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

案例:

有一个log日志文件,里面每行日志大概格式如下:其中_代表空格
ab_c_"abc_adadfasd"_def_"dddd"
需要对这样的数据进行处理,切分成数组。切分规则如下:
(1)双引号""里面的空格不切分,分为整体
(2)双引号""外的空格是分隔符
这样上面这样数据切分后的数组如下:
[
   "ab",
   "c",
   "adadfasd",
   "def",
   "dddd"
]
package main

import "fmt"

func main() {
	str := `ab_c_"abc_adadfasd"_def_"dddd"`
	// 定义一个 []string 类型的out
	var out []string
	temp := ""
	// 定义一个 bool类型的标记 默认为false
	var flag bool
	//遍历字符串
	for k, v := range str {
		//将v转化为string类型
		s := fmt.Sprintf("%c", v)
		//如果 s 不等于 " 并且 _ 直接追加到temp中
		if s != "_" && s != `"` {
			temp += s
		} else if s == "_" && flag == true { //如果 s 等于 _ 并且比flag 是true的话直接追加到temp中
			temp += s
		} else if s == "_" && flag == false { //如果 s 等于 _ 并且比flag 是false 将temp 追加到out中 并把temp重置为空字符串
			out = append(out, temp)
			temp = ""
		} else if s == `"` && k == len(str)-1 { // 如果s 以 " 结尾 直接将temp追加到out中去
			out = append(out, temp)
		} else if s == `"` && flag == false { //如果 s 等于 " flog == false  将flag 设置为true 表示 " "的左引号出现
			flag = true
		} else if s == `"` && flag == true { //如果 s 等于 " flog == true  将flag 设置为true 表示 " "的右引号出现
			flag = false
		}
	}
	//遍历数组
	for _, v := range out {
		fmt.Println(v)
	}
}

 

var code = "4afa27e5-234d-4a12-8fbc-2771fb2b0db1"

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

❀想容

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值