0

文字列の最後にあるパーセントを取得しようとしています (つまり、「50013 / 247050 [20%]」の場合、最後に 20 が必要です)。何らかの理由で -1 が返され続けます。私のコードの問題は何ですか?

public int percent(String s)
{
    String outp = "-1";

    if(s != null)
    outp = s;

    try
    {
        outp = s.Substring(s.IndexOf("["), s.IndexOf("%"));
    }
    catch (ArgumentOutOfRangeException e)
    {
    }

    int outt = int.Parse(outp);
    return outt;
}
4

2 に答える 2

4

2 番目のパラメーターはindexではなくcountです。したがって、次のようにする必要があります。

// because, you don't want the [, you'll add 1 to the index,
int index1 = s.IndexOf("[") + 1;
int index2 = s.IndexOf("%");
string outp = s.Substring(index1, index2 - index1);
于 2013-08-10T23:07:55.377 に答える
2

これには正規表現を使用することもできます

string text = "50013 / 247050 [20%]";
var outp = Regex.Match(text, @"\[(\d+)%\]").Groups[1].Value;
于 2013-08-10T23:09:22.070 に答える