我的字符串是“csm15 + abc-indiaurban @ v2”。我只想从我的字符串中“indiaurban”。我现在正在做的是:
var lastindexofplusminus = input.LastIndexOfAny(new char[]{'+','-'});
var lastindexofattherate = input.LastIndexOf('@');
string sub = input.Substring(lastindexofplusminus,lastindexofattherate);
但是收到错误“索引和长度必须引用字符串中的位置。”
先谢谢。
答案 0 :(得分:6)
您应该将length
的{{1}}放在第二个参数中,而不是传递另一个索引。鉴于您知道这两个索引,转换为长度非常简单:
Substring
注意,在<{em> string sub = input.Substring(lastindexofplusminus + 1,lastindexofattherate - lastindexofplusminus - 1);
之后获取char 需要+1
。需要lastindexofplusminus
才能获得-1
减去 Substring
本身。
答案 1 :(得分:0)
您可以使用LINQ:
string input = "csm15+abc-indiaurban@v2";
string result = String.Join("", input.Reverse()
.SkipWhile(c => c != '@')
.Skip(1)
.TakeWhile(c => c != '+' && c != '-')
.Reverse());
Console.WriteLine(result); // indiaurban
答案 2 :(得分:0)
我不知道什么是你的断点,但这里有样本正在运作
您可以在String.Substring Method (Int32, Int32)
了解详情String s = "csm15+abc-indiaurban@v2";
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);
答案 3 :(得分:0)
您可以简单地反转字符串,根据位置和长度应用子字符串,然后再次反转。
string result = string.Join("", string.Join("", teste.Reverse()).Substring(1, 10).Reverse());
或创建一个函数:
public static string SubstringReverse(string str, int reverseIndex, int length) {
return string.Join("", str.Reverse().Skip(reverseIndex - 1).Take(length));
}
答案 4 :(得分:-2)
假设您的字符串始终采用该格式
string str = "csm15+abc-indiaurban@v2";
string subSTr = str.Substring(10).Substring(0,10);