子串函数不适用于.net cf?

时间:2011-04-14 23:43:43

标签: c# compact-framework

净CF

我需要使用substring来捕获字符串的中间部分。

txtpart.Text = "ab12345678cde";
string item = txtpart.Text.Substring(2,8);

输出应该是12345678。

但它始终抛出此异常

  

System.ArgumentOutOfRangeException:指定的参数超出了有效值的范围。

是否有除substring之外的任何函数?

3 个答案:

答案 0 :(得分:1)

您的示例应该返回2345678c而不是12345678,但这并不重要。您拥有的代码是有效的,不应该抛出错误。您是否仅仅为了示例而通过ab12345678cde?你能告诉我们错误发生时真正传递的是什么吗?

您可以在此处查看代码的执行方式:

http://ideone.com/jufd3

如果你的长度太长,我相信你会得到一个错误,但不是你看到的错误。

答案 1 :(得分:1)

您的代码看起来很好。

查看Daniel Moth关于.net cf

上的子字符串问题的博客

The Moth Substring Bug on .net cf

最好的问候

答案 2 :(得分:0)

我知道这是一个老问题,但这可以帮助某人......

这是一个简单的功能,您可以使用" get"在任何字符串的中间:

public static string getBetween(string strSource, string strStart, string strEnd)
    {
        int Start, End;
        if (strSource.Contains(strStart) && strSource.Contains(strEnd))
        {
            Start = strSource.IndexOf(strStart, 0) + strStart.Length;
            End = strSource.IndexOf(strEnd, Start);
            return strSource.Substring(Start, End - Start);
        }
        else
        {
            return "";
        }
    }

要使用它,请致电:

string mySelectedText = getBetween(txtpart.Text, "b", "c");
Debug.WriteLine(mySelectedText);

结果将是12345678

希望它有所帮助。此致