如何获取包含特定字母的字符串数组元素的位置

时间:2014-07-28 17:52:49

标签: c# arrays textbox split

我正在处理一个应用程序,在该应用程序中,用户将破折号分隔值输入到文本框中,文本框值被放入字符串数组中,由" - "分割。我需要搜索这个数组并获取包含字母" q"的元素的位置。

此文本框中可能有6种不同的输入,输入示例为:

  • " 292"
  • " 292-0"
  • " 292-0-10"
  • " 292-Q10"
  • " 292-0-Q10"
  • " 292-0-10-Q10"

我将文本框值拆分为" - "。代码是:string[] arrayJobSuffix = txtBFSJob.Text.Split(new char[] { '-' }, 5);

现在我需要搜索这个arrayJobSuffix数组并找到包含" q"的元素的位置。

示例,假设数组中的第一个元素为0,则为:

  1. 如果文本框中的值为" 292"," 292-0"或" 292-0-10",返回-1或某些指示" q"不存在。
  2. 如果文本框中的值为" 292-q10",则返回1
  3. 如果文本框中的值为" 292-0-q10",则返回2
  4. 如果文本框中的值为" 292-0-10-q10",则返回3等等...

3 个答案:

答案 0 :(得分:5)

您可以使用各种方式实现它,例如:

txtBFSJob.Text.Split('-')
.Select((x,idx) => new { x, idx })
.First(c => c.x.Contains("q")).idx;

或者:

var parts = txtBFSJob.Text.Split('-');

int index = Array.IndexOf(parts, parts.FirstOrDefault(x => x.Contains("q"));

如果第一个解决方案找不到包含"q"

的结果,则会抛出异常

第二个解决方案不会抛出异常,只会返回-1

答案 1 :(得分:0)

您可以在这样的循环中使用string.contains()方法:

for (int i = 0; i < arrayJobSuffix.Length; i++)
{
    if (arrayJobSuffix[i].contains("q"))
        return i;
}

答案 2 :(得分:0)

public static int GetSearchStringIndex(string[] inputs, char searchString){
    int index = -1;
    int len = inputs.Length;
    for(int i=0; i<len ; i++){
        foreach(char c in inputs[i]){
            if(c==searchString){
                index=i;
                break;
            }
        }
    }
    return index;
}

public static int GetSearchStringIndex(string[] inputs, string searchString){
    int index = -1;
    int len = inputs.Length;
    for(int i=0; i<len; i++){
        if(inputs[i].Contains(searchString)){
            index = i;
            break;
        }
    }

    return index;
}