python - 了解切片在 python 中的工作原理并使用 C# 实现相同的目的
问题描述
string = "This is a test string. It has 44 characters." #Line1
for i in range(len(string) // 10): #Line2
result= string[10 * i:10 * i + 10] #Line3
print(result) #Line4
我想理解上面的代码,这样我就可以使用 C# 实现同样的事情
据我了解,在 Line2 中:
len(string) 计算上述字符串的长度为 44,除以 10 返回 4,范围(4) 应返回:0,1,2,3 因此for
循环将运行 4 次以打印result
我通过在 python 代码中添加以下语句来确认 Line3 的工作原理:
print(string[0:10])
print(string[10:20])
print(string[20:30])
print(string[30:40])
两者的输出是:
这是一个 测试串 G。它有 44 个字符
我在 C# 中尝试了以下代码来实现相同的效果,但没有打印任何内容:
string str = "This is a test string. It has 44 characters.";
foreach (int i in Enumerable.Range(0, str.Length / 10))
{
string result = str[(10*i)..(10*i+10)];
Console.WriteLine(result);
}
解决方案
这就是您在 C# 中使用以下命令对字符串进行切片的方式Substring
:
string str = "This is a test string. It has 44 characters.";
foreach (int i in Enumerable.Range(0, str.Length / 10))
{
var start = 10 * i;
var end = 10 * i + 10;
Console.WriteLine(str.Substring(start, end));
}
....但您可能需要调整数字并检查索引/超出范围异常。
推荐阅读
- visual-studio-code - 在 vscode 我隐藏通知(右下角),但我想重新显示它。我该怎么办?
- html - 溢出:隐藏不会在 iOS Safari 上创建新的块格式化上下文
- mysql - 如何解决 SQL 单反
- odoo - 销售/用户联系人:只有自己的文档组,但似乎管理员组也受到影响
- python - socket.gaierror: [Errno 8] nodename or servname provided, or not known : Dash App
- java - 在“用户名”和“密码”字段中使用 Junit 5 进行参数化测试
- c++ - 打开一个 csv 文件进行测试,但 myfile.is_open() 返回 false
- javascript - Python中的JavaScript toString(16)用于浮点数?
- c - strtoll 溢出时未将 errno 设置为 ERANGE
- arrays - 将元素附加到数组后,它应该显示更多元素