【发布时间】:2021-08-23 11:09:22
【问题描述】:
如果响应长度大于指定的长度,我试图从响应字符串中获取子字符串并循环遍历它。我的代码:
string response = //response from API
if (response.Length > 4096)
{
for (int i = 0; i < response.Length; i += 4096)
{
string rplymsg = response.Substring(i, 4095);
//other code using rplymsg
}
}
else
{
//other code using response
}
我尝试过String.Substring 方法,它在调试中返回具有指定长度的子字符串,但实际子字符串长度大于。 (我通过在记事本++中粘贴子字符串来验证。)
我认为问题是因为response 字符串和子字符串rplymsg 包含新行\n。
是否有任何解决方案或更好的方法来获取包含换行符的字符串计数,以便我可以根据该长度提取子字符串。
编辑:
例如:
String value = "Hi\nHello.";
int startIndex = 0;
int length = 4;
String substring = value.Substring(startIndex, length);
Console.WriteLine(substring);
// Output:
// Hi
// H
// Expected output:
// Hi\n
【问题讨论】:
-
为什么你只得到 4095 个字符的子字符串而不是 4096 个?
-
如果你想从 HTML 中提取数据,那么像 Html Agility Pack 这样的东西可以让你更容易。
-
您正在 for 循环中创建新字符串。你的逻辑正确吗?如果要从头开始获取子字符串,则必须将 0 作为第一个参数传递。
-
看起来 notepad++ 为每个换行符计算 2 个字符...在代码长度和 Notepad++ 长度之间有 37 个字符的差异,而 Notepad++ 中总共有 38 行。我认为你应该依赖于你在代码中得到的长度,而不是依赖于编辑器......
-
@phuzi 字符串中的字符个数
rplymsg
标签: c# asp.net string for-loop