2

私はそれがばかげた質問であることを知っていますが、私は本当にそれに固執しています。以下はコードです:

PropertyInfo[] requestPropertyInfo;
requestPropertyInfo = typeof(CBNotesInqAndMaintRequest).GetProperties();

CBNotesInqAndMaintRequestには、リクエストデータメンバーnoteline1---noteline18が含まれています。データメンバーの1つの名前を読み取ったら、その最後のインデックスを取得したいと思います。たとえば。リクエストオブジェクトの名前が「noteline8」の場合、インデックスを8として取得します。

このために、私は以下のコードを書きました:

foreach (PropertyInfo reqPropertyInfo in requestPropertyInfo)
{
  index = reqPropertyInfo.Name.LastIndexOf("noteline");
}

しかし、上記のコードはインデックスを0として返しています。助けてください

4

8 に答える 8

3

それはあなたが望むものですか?

foreach (PropertyInfo reqPropertyInfo in requestPropertyInfo)
{
  index = int.Parse(reqPropertyInfo.Name.Replace("noteline",""));
}
于 2012-07-26T15:29:21.370 に答える
2

'noteline'の後に番号を取得したいようです。その場合:

index = int.Parse(reqPropertyInfo.Name.SubString(8));
于 2012-07-26T15:29:34.517 に答える
2
index = reqPropertyInfo.Name.Length -1;

「noteline18」の場合、8ではなく1のインデックスを検索する必要があります。

index = reqPropertyInfo.Name.LastIndexOf('e') + 1
于 2012-07-26T15:38:50.297 に答える
1

戻ってくる理由は0、文字列「noteline」全体の最後のインデックスを返すためです。もちろん、これは常に位置0にあります。「notelinenoteline」がある場合は、「8」が返されます。

さて、あなたが取り戻したいものに関して:

index = reqPropertyInfo.Name.Substring(8);
于 2012-07-26T15:28:29.043 に答える
1

プロパティ名が何であるかは関係ありませんが、最後の桁を取得して整数を返すRegExソリューションを作成しました

static int GetLastInteger( string name ) {

    int value;
    if( int.TryParse( name, out value ) ) {
        return value;
    }
    System.Text.RegularExpressions.Regex r = 
        new System.Text.RegularExpressions.Regex( @"[^0-9](\d+\b)" );

    System.Text.RegularExpressions.Match m = 
        r.Match( name );

    string strValue = m.Groups[1].Value;
    value = ( int.Parse( strValue ) );
    return value;
}

あなたの例では次のように使用できます:

foreach (PropertyInfo reqPropertyInfo in requestPropertyInfo)
{
  index = GetLastInteger(reqPropertyInfo.Name);
}
于 2012-07-26T16:01:09.527 に答える
0

LastIndexOf探している文字列の開始インデックスを返します。そのため、0が返されます。

于 2012-07-26T15:28:14.870 に答える
0

編集

あなたのコメントを考慮して、あなたはするべきです:

Int32 index = Convert.ToInt32(reqPropertyInfo.Name.Replace("noteline",""));
于 2012-07-26T15:31:26.717 に答える
0

私の意見では、最も簡単な答えは、文字列の数を取得してから1を引くことです。これにより、以下に示すように、その文字列の最後のインデックスが得られます。

int lastIndex= sampleString.Count-1; //sampleString is the string here.
于 2017-09-06T07:24:03.867 に答える