2014-06-17 61 views
-3
for (int i = 0; i < links.Count; i++) 
{ 
    int f = links[i].IndexOf("http"); 
} 

linksList<string>
例如,在索引0 I具有:http://test/107281.shtml#34
我想從僅此該鏈接提取: http://test/107281.shtml而不在端#34。爲什麼在使用indexOf的時候所有的時間都是0?

但是爲什麼f始終返回0?

+6

那麼你正在尋找字符串中第一次出現'http'。如果所有的字符串都以'http'開始,爲什麼它會返回0以外的任何內容?也許你應該使用'IndexOf(「#」)'而不是? –

+1

由於'http:// test/107281.shtml'中''0'索引中第一次出現'http'。 –

回答

0

一個字符串的第一個字符位於索引0,所以在字符串http://test/107281.shtml#34http是其位於索引0的字符串中的第一件事... 要提取您可以結合使用兩種或正則表達式indexOf("#")substring

3

這是正確的....,導致該字符串的「http」開頭指數是0,如果無法找到字符串的IndexOf返回-1 ...

0

我猜你正在尋找的東西,如:

for (int i = 0; i < links.Count; i++) 
{ 
    int f = links[i].IndexOf("#"); 
} 

這應該給你第一個#的索引。
IndexOf("http")應該爲您提供0,因爲http位於索引0
爲了獲取字符串你正在尋找:使用您的演示串HERE

for (int i = 0; i < links.Count; i++) 
{ 
    var url = links[i].Substring(0, links[i].IndexOf("#")); 
} 

例。

0

indexOf()方法返回字符串中第一次出現指定值的位置。

var str = "Hello world, welcome to the universe."; 
var n = str.indexOf("welcome"); 

輸出將是:13 這是位置編號。

接下來,您將刪除您想要刪除的位置。

0
 List<string> link_list = new List<string> { "http://test/107281.shtml#34", "http://test/107281.shtml#35" }; 
     List<string> new_list = new List<string>(); 
     foreach (var item in link_list) 
     { 
      string bb = item.Substring(0, item.ToString().IndexOf("#")); 
      new_list.Add(bb); 
     } 
相關問題