2016-04-15 27 views
1

我的字符串是“csm15 + abc-indiaurban @ v2”。我只想从我的字符串中获得“indiaurban”。我现在正在做的是:c如何在反向模式下进行子串处理#

var lastindexofplusminus = input.LastIndexOfAny(new char[]{'+','-'}); 

var lastindexofattherate = input.LastIndexOf('@'); 

string sub = input.Substring(lastindexofplusminus,lastindexofattherate); 

但出现错误“索引和长度必须引用字符串中的位置”。

在此先感谢。

+2

“索引和**长度**” - 您传递两个索引。 – Blorgbeard

+0

那么如何实现只有“indiaurban”。你能给我正确的子字符串吗? – N2J

+1

您是否了解我的意见?如果是这样,你应该能够自己解决。 – Blorgbeard

回答

6

你应该把lengthSubstring你想抢第二个参数,而不是传递另一个索引。既然你知道这两个指标,翻译的长度是相当直截了当:

string sub = input.Substring(lastindexofplusminus + 1,lastindexofattherate - lastindexofplusminus - 1); 

注意,+1需要后你lastindexofplusminus获得焦炭。需要-1才能得到它们之间的Substring减去lastindexofattherate本身。

-2

假设你的字符串总是以这种格式

string str = "[email protected]"; 
string subSTr = str.Substring(10).Substring(0,10); 
0

你可以使用LINQ:

string input = "[email protected]"; 

string result = String.Join("", input.Reverse() 
            .SkipWhile(c => c != '@') 
            .Skip(1) 
            .TakeWhile(c => c != '+' && c != '-') 
            .Reverse()); 

Console.WriteLine(result); // indiaurban 
+0

这似乎很疯狂 - 过分简单的子串操作.. – Blorgbeard

0

我不知道什么是确定您的破发点,但这里是样品这是工作

你可以在这里了解更多关于String.Substring Method (Int32, Int32)

String s = "[email protected]"; 
     Char charRange = '-'; 
     Char charEnd = '@'; 
     int startIndex = s.IndexOf(charRange); 
     int endIndex = s.LastIndexOf(charEnd); 
     int length = endIndex - startIndex - 1; 
     Label1.Text = s.Substring(startIndex+1, length); 
相关问题