首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >子字符串索引和长度必须引用字符串中的某个位置

子字符串索引和长度必须引用字符串中的某个位置
EN

Stack Overflow用户
提问于 2012-06-22 07:25:16
回答 8查看 167.2K关注 0票数 33

我有一个字符串,看起来像这样

代码语言:javascript
运行
复制
string url = "www.example.com/aaa/bbb.jpg";

"www.example.com/“的长度固定为18。我想从这个字符串中获取" aaa/bbb“部分(实际的url既不是example也不是aaa/bbb,但长度可能会有所不同)

下面是我所做的:

代码语言:javascript
运行
复制
string newString = url.Substring(18, url.Length - 4);

然后我得到了一个异常: index和length必须引用字符串中的一个位置。我的代码出了什么问题,如何修复它?提前谢谢。

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2012-06-22 07:28:19

Substring中的第二个参数是子字符串的长度,而不是结束索引。

您可能应该包括处理,以检查它是否确实以您期望的内容开始,以您期望的内容结束,并且至少与您期望的一样长。如果不匹配,您可以执行其他操作或抛出有意义的错误。

下面是一些示例代码,用于验证url是否包含您的字符串,这些代码也进行了一些重构,以便更容易地将前缀/后缀更改为strip:

代码语言:javascript
运行
复制
var prefix = "www.example.com/";
var suffix = ".jpg";
string url = "www.example.com/aaa/bbb.jpg";

if (url.StartsWith(prefix) && url.EndsWith(suffix) && url.Length >= (prefix.Length + suffix.Length))
{
    string newString = url.Substring(prefix.Length, url.Length - prefix.Length - suffix.Length);
    Console.WriteLine(newString);
}
else
    //handle invalid state
票数 59
EN

Stack Overflow用户

发布于 2012-06-22 07:28:56

您的错误是子字符串的参数。第一个参数应该是起始索引,第二个参数应该是起始索引的长度或偏移量。

代码语言:javascript
运行
复制
string newString = url.Substring(18, 7);

如果子字符串的长度可以变化,则需要计算长度。

(url.Length - 18) - 4 (或url.Length - 22)方向上的一些东西

最后,它将看起来像这样

代码语言:javascript
运行
复制
string newString = url.Substring(18, url.Length - 22);
票数 7
EN

Stack Overflow用户

发布于 2012-06-22 07:51:07

这样如何:

代码语言:javascript
运行
复制
string url = "http://www.example.com/aaa/bbb.jpg";
Uri uri = new Uri(url);
string path_Query = uri.PathAndQuery;
string extension =  Path.GetExtension(path_Query);

path_Query = path_Query.Replace(extension, string.Empty);// This will remove extension
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11148238

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档