2013-02-24 3 views
4

У меня проблема:string.Remove does not work

ive написал программу, которая использует поиск изображений Google, чтобы лишние ссылки на jpg-файлы. Но перед ссылкой у меня есть длинная строка длиной 15 символов, которую я не могу удалить.

public const int resolution = 1920; 
    public const int DEFAULTIMGCOUNT = 40; 

    public void getimages(string searchpatt) 
    { 
     string blub = "http://images.google.com/images?q=" + searchpatt + "&biw=" + resolution; 
     WebClient client = new WebClient(); 

     string html = client.DownloadString(blub);            //Downloading the gooogle page; 
     MatchCollection mc = Regex.Matches(html, 
      @"(https?:)?//?[^'<>]+?\.(jpg|jpeg|gif|png)"); 

     int mccount = 0;                  // Keep track of imgurls 
     string[] results = new string[DEFAULTIMGCOUNT];           // String Array to place the Urls 

     foreach (Match m in mc)                 //put matches in string array 
     { 
      results[mccount] = m.Value;     
      mccount++; 
     } 

     string remove = "/imgres?imgurl="; 
     char[] removetochar = remove.ToCharArray(); 

     foreach (string s in results) 
     { 
      if (s != null) 
      { 
       s.Remove(0, 15); 
       Console.WriteLine(s+"\n"); 
      } 
      else { } 
     } 
     // Console.Write(html); 


    } 

Я попробовал удалить и подгонять, но ни один из них не работает, и я не могу выяснить, что случилось.

Я решил это как

 for (int i = 0; i < results.Count(); i++) 
     { 
      if (results[i] != null) 
      { 
       results[i] = results[i].Substring(15); 
       Console.Write(results[i]+"\n"); 
      } 
     } 
+0

Поскольку вы знаете, что вы хотите сбросить 15 символов, которые можно использовать подстроку. –

+1

Обратите внимание, что большая часть вашего кода фактически не имеет отношения к вашему вопросу - и у вас есть переменные, которые вы даже не используете. (Почему вы вообще вызываете 'ToCharArray'?) –

+0

Я был не уверен, если мой отказ будет в MatchCollection –

ответ

24

(я уверен, что это дубликат, но я не могу сразу найти.)

Строки в .NET неизменны. Методы вроде string.Remove, string.Replace и т. Д. Не меняют содержимое существующей строки - они возвращают строку .

Так что вы хотите что-то вроде:

s = s.Remove(0, 15); 

или, альтернативно, просто использовать Substring:

s = s.Substring(15); 
+0

спасибо :) i didnt знал, что –