C# - Substring: index and length must refer to a location within the string

后端 未结 8 1334
有刺的猬
有刺的猬 2020-12-05 23:31

I have a string that looks like

string url = \"www.example.com/aaa/bbb.jpg\";

\"www.example.com/\" is 18 fixed in length. I want to get th

相关标签:
8条回答
  • 2020-12-05 23:42

    Your mistake is the parameters to Substring. The first parameter should be the start index and the second should be the length or offset from the startindex.

    string newString = url.Substring(18, 7);
    

    If the length of the substring can vary you need to calculate the length.

    Something in the direction of (url.Length - 18) - 4 (or url.Length - 22)

    In the end it will look something like this

    string newString = url.Substring(18, url.Length - 22);
    
    0 讨论(0)
  • 2020-12-05 23:45
    string newString = url.Substring(18, (url.LastIndexOf(".") - 18))
    
    0 讨论(0)
  • 2020-12-05 23:48

    Here is another suggestion. If you can prepend http:// to your url string you can do this

      string path = "http://www.example.com/aaa/bbb.jpg";
      Uri uri = new Uri(path);            
      string expectedString = 
          uri.PathAndQuery.Remove(uri.PathAndQuery.LastIndexOf("."));
    
    0 讨论(0)
  • 2020-12-05 23:49

    You need to find the position of the first /, and then calculate the portion you want:

    string url = "www.example.com/aaa/bbb.jpg";
    int Idx = url.IndexOf("/");
    string yourValue = url.Substring(Idx + 1, url.Length - Idx - 4);
    
    0 讨论(0)
  • 2020-12-06 00:01

    How about something like this :

    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
    
    0 讨论(0)
  • 2020-12-06 00:01

    Try This:

     int positionOfJPG=url.IndexOf(".jpg");
     string newString = url.Substring(18, url.Length - positionOfJPG);
    
    0 讨论(0)
提交回复
热议问题