From 11b596c22dcabf91f9595da778b00e26f4d661a8 Mon Sep 17 00:00:00 2001 From: qiulaidongfeng <2645477756@qq.com> Date: Thu, 9 Apr 2026 22:04:07 +0800 Subject: bytes,strings: add CutLast Fixes #71151 Change-Id: I3b3d49c35b0fa2c1220d3f39bbd506cc072b52b0 Reviewed-on: https://go-review.googlesource.com/c/go/+/764601 LUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com Reviewed-by: David Chase Reviewed-by: Sean Liao Reviewed-by: Robert Griesemer Auto-Submit: Robert Griesemer --- src/bytes/bytes.go | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'src/bytes/bytes.go') diff --git a/src/bytes/bytes.go b/src/bytes/bytes.go index 98f78f10c3..2bd1284296 100644 --- a/src/bytes/bytes.go +++ b/src/bytes/bytes.go @@ -1422,3 +1422,16 @@ func CutSuffix(s, suffix []byte) (before []byte, found bool) { } return s[:len(s)-len(suffix)], true } + +// CutLast slices s around the last instance of sep, +// returning the text before and after sep. +// The found result reports whether sep appears in s. +// If sep does not appear in s, CutLast returns s, nil, false. +// +// CutLast returns slices of the original slice s, not copies. +func CutLast(s, sep []byte) (before, after []byte, found bool) { + if i := LastIndex(s, sep); i >= 0 { + return s[:i], s[i+len(sep):], true + } + return s, nil, false +} -- cgit v1.3