C#中是否支持类似Python的区间式字符串切片(Slicing)操作
C# 实现区间字符串切片的方法
对应Python示例中b[2:5]截取"Hello, World!"索引2到5(不含5)位置字符、得到结果llo的需求,C#根据版本不同,有两种常用实现方式:
C# 8.0 及以上版本:原生范围语法
C# 8.0 引入了和Python切片逻辑高度一致的Range范围语法,直接通过索引器就能实现同等效果,规则同样是左闭右开(截取区间包含起始索引、不包含结束索引):
string b = "Hello, World!"; Console.WriteLine(b[2..5]); // 输出:llo,和Python示例运行结果完全一致
常用的简写规则也和Python切片对齐:
- 从字符串开头截取到指定结束位置前:
b[..end],等价于Python的b[:end] - 从指定起始位置截取到字符串末尾:
b[start..],等价于Python的b[start:] - 支持从末尾倒计数索引,用
^标记:比如b[^3..]表示截取最后3个字符,等价于Python的b[-3:]
C# 8.0 以前版本:Substring 内置方法
如果是旧版本C#,可以用字符串自带的Substring方法实现同等效果。注意这个方法的参数和Range语法有区别:第一个参数是起始索引,第二个参数是截取的字符长度,不是结束位置。
对应示例的实现代码:
string b = "Hello, World!"; // 从索引2开始,截取长度为 5-2=3 的字符 Console.WriteLine(b.Substring(2, 3)); // 输出:llo
如果需要从指定起始位置一直截取到字符串末尾,只需要传入起始索引即可,比如b.Substring(2)就是从索引2位置开始截取到字符串最后。
内容的提问来源于stack exchange,提问作者SolarOsQuiere
相关产品推荐
相关产品推荐

