使用代码记录string的简单用法

String

简介

Go中的字符串是一个字节的切片。

Strings包

s4 := "hello"
	//判断string中是否存在指定内容----bool类型
	fmt.Println(strings.Contains(s4,"h"))

	//判断指定内容中是否存在与string相同的内容----bool类型
	fmt.Println(strings.ContainsAny(s4,"ll"))

	//记录指定内容在string中出现的次数
	fmt.Println(strings.Count(s4,"hl"))

	//判断是否以指定内容开头,如果是,返回true
	fmt.Println(strings.HasPrefix(s4,"he"))
	//判断是否以指定内容结尾,如果是,返回true
	fmt.Println(strings.HasSuffix(s4,"he"))

	//查找substr在s中的位置,如果不存在 就返回-1
	fmt.Println(strings.Index(s4,"llo"))

	//查找chars中任意的一个字符出现在s中的位置
	fmt.Println(strings.IndexAny(s4,"h"))

	//查找substr在string中出现的最后的位置
	fmt.Println("l")

	//字符串的拼接,使用sep来拼接字符串数组
	ss1:=[]string{"abc","def","duan"}
	s3:=strings.Join(ss1,"*")
	fmt.Println(s3)

	//通过特定的字符,切割字符串
	s5:="12,1,1,1,34,,5,f"
	ss5:=strings.Split(s5,",")
	for i:=0;i<len(ss5);i++{
		fmt.Print(ss5[i])
	}

	//替换
	//old表示需要替换的字符,new表示用来替换的字符n表示替换的次数,如果n为-1的话,表示全部替换
	s6:=strings.Replace(s4,"l","*",1)
	fmt.Println(s6)

	//
	s7:="hello World124"
	//大写换小写
	fmt.Println(strings.ToLower(s7))
	//小写换大写
	fmt.Println(strings.ToUpper(s7))s4 := "hello"
//判断string中是否存在指定内容----bool类型
fmt.Println(strings.Contains(s4,"h"))

//判断指定内容中是否存在与string相同的内容----bool类型
fmt.Println(strings,"habab")

//记录指定内容在string中出现的次数
fmt.Println(strings.Count(s4,"hl"))

//判断是否以指定内容开头,如果是,返回true
fmt.Println(string.HasPrefix(s4,"he")
)
//判断是否以指定内容结尾,如果是,返回true
fmt.Println(string.HasSuffix(s4,"lo"))

strconv包

s1:="true"
	//字符串转为bool类型
	b1,err:=strconv.ParseBool(s1)
	if err!=nil{
		fmt.Println(err)
		return
	}
	fmt.Printf("%T,%t\n",b1,b1)
	//bool转为string
	ss1 := strconv.FormatBool(b1)
	fmt.Printf("%T,%s\n",ss1,ss1)

	//整数
	s2:="100"
	//表示10进制,64位
	i2,err := strconv.ParseInt(s2,10,64)
	if err!=nil{
		fmt.Println(err)
		return
	}
	fmt.Println("%T,%d\n",i2,i2)

	ss2:=strconv.FormatInt(i2,10)
	fmt.Printf("%T,%s\n",ss2,ss2)

异步编程中,我们可以使用MDC(Mapped Diagnostic Context)来记录日志,以便在异步调用链中跟踪和诊断问题。下面是一个使用MDC记录日志的示例代码: ```java import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.slf4j.MDC; import java.util.UUID; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class AsyncLoggingExample { private static final Logger logger = LoggerFactory.getLogger(AsyncLoggingExample.class); public static void main(String[] args) throws Exception { ExecutorService executor = Executors.newFixedThreadPool(2); // 设置MDC上下文 MDC.put("traceId", UUID.randomUUID().toString()); CompletableFuture<Void> future1 = CompletableFuture.runAsync(() -> { logger.info("Hello from async task 1"); }, executor); CompletableFuture<Void> future2 = CompletableFuture.runAsync(() -> { logger.info("Hello from async task 2"); }, executor); CompletableFuture.allOf(future1, future2).join(); // 清除MDC上下文 MDC.clear(); } } ``` 在上面的代码中,我们使用MDC.put()方法设置了一个traceId的上下文,然后在异步任务中使用logger记录日志。由于MDC是线程本地的,所以在异步任务中也可以访问到这个上下文。最后,我们使用MDC.clear()方法清除了MDC上下文,以免对后续的日志记录造成影响。 注意:在实际应用中,我们可能需要在请求进入时设置MDC上下文,在请求结束时清除MDC上下文,以便正确地跟踪请求的调用链。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值