如何在c#中以反向模式进行子串

时间:2016-04-15 04:02:19

标签: c# string substring reverse

我的字符串是“csm15 + abc-indiaurban @ v2”。我只想从我的字符串中“indiaurban”。我现在正在做的是:

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

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

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

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

先谢谢。

5 个答案:

答案 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));
}

View function working here!!

答案 4 :(得分:-2)

假设您的字符串始终采用该格式

string str = "csm15+abc-indiaurban@v2";
string subSTr = str.Substring(10).Substring(0,10);