2

我知道这是一个愚蠢的问题,但我真的坚持下去。下面是代码:

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

CBNotesInqAndMaintRequest 包含请求数据成员noteline1---noteline18。一旦我读取了其中一个数据成员的名称,我想获得它的最后一个索引。例如。如果请求对象的名称是“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
index = reqPropertyInfo.Name.Length -1;

在“noteline18”的情况下,你想找到 1 而不是 8 的索引,然后

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

看起来您想在“noteline”之后获取数字。如果是这样的话:

index = int.Parse(reqPropertyInfo.Name.SubString(8));
于 2012-07-26T15:29:34.517 回答
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 回答
1

你回来的原因0是它返回整个字符串“noteline”的最后一个索引,当然,它总是在位置 0。如果你有“notelinenoteline”,它将返回“8”。

现在,关于您想要返回的内容:

index = reqPropertyInfo.Name.Substring(8);
于 2012-07-26T15:28:29.043 回答
0

编辑

考虑到您的评论,您应该这样做:

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

LastIndexOf返回您要查找的字符串的起始索引,这就是它返回 0 的原因。

于 2012-07-26T15:28:14.870 回答
0

我认为最简单的答案是获取字符串的计数,然后将其减去 1,将为您提供该字符串的最后一个索引,如下所示:-

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