【问题标题】:How to get the position of a string array element that contains a certain letter如何获取包含某个字母的字符串数组元素的位置
【发布时间】:2014-07-28 17:52:49
【问题描述】:

我正在开发一个应用程序,用户将在其中输入破折号分隔的值到文本框中,文本框值被放入字符串数组中,用“-”分隔。我需要搜索这个数组并获取包含字母“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 等...

【问题讨论】:

    标签: c# arrays textbox split


    【解决方案1】:

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

    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

    【讨论】:

    • 感谢您的回复,对于第一个解决方案,我收到以下错误:只有赋值、调用、递增、递减和新对象表达式可以用作语句和第二个解决方案我得到错误:方法'First'没有重载需要2个参数
    • 没关系,我搞砸了第二个解决方案。它现在完美运行。谢谢!!!
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:
      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;
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-08-13
        • 2020-09-04
        • 2012-05-15
        • 1970-01-01
        • 2018-04-09
        • 2021-09-16
        • 2022-09-23
        • 2021-01-04
        相关资源
        最近更新 更多