【发布时间】:2014-12-02 00:14:49
【问题描述】:
根据我的问题,我想在当前起始索引之前获取第一个逗号的索引。举一个数据的例子,我有一个这样的字符串:
Bob Green;PD,Andy Richards;BD,Frank Williams;OW,James Clack;PM
字符串包含设置为[Persons Name];[Role] 的元素,因此名称与角色之间用;(分号)分隔,每个元素之间用,(逗号)分隔。
字符串中的元素可以按任何顺序排列,所以我提出问题的原因是我想为角色OW 获取此人的姓名。我最初的想法是获取;OW, 的索引并以某种方式从那里返回。我显然可以从我的起始索引检查中向后循环遍历字符串以查看字符是否是逗号,但这似乎效率低下,那么有没有更好的方法来实现这一点?
编辑
为了澄清,我只想获取与角色 OW 关联的名称。这个角色应该只在字符串中出现一次。如果没有,那么我很高兴只得到第一次出现,我认为 IndexOf(";OW,") 会这样做。我不需要其他角色或名称,只需要与 OW 关联的名称。
此外,角色的长度永远只有 2 个字符。正如 Matt Burland 指出的那样,如果它位于字符串的末尾,则不会有尾随逗号。不过,我可以修改我的 indexof 以简单地搜索“;OW”,因为角色只有 2 个字符长。
【问题讨论】:
-
String.LastIndexOf? -
角色是唯一的还是可以有多个相同的角色?
-
但更好的方法可能是将您的字符串解析为一个集合(也许
Dictionary<string,string>键入角色),这样您就可以轻松查找任何角色并找到相关人员。 -
@sr28 是的,确实如此 - 但你可以传入一个起始位置来表示“从这里开始而不是字符串的结尾”
-
@ZoomVirus 询问 OP,而不是我。