【问题标题】:indexOf and substring skipping 1 resultindexOf 和子字符串跳过 1 个结果
【发布时间】:2015-08-13 05:36:44
【问题描述】:

我正在尝试分离/分解一个字符串,以便稍后对其进行处理。

输入字符串是这样的:

1_2_3_2_2

我以上述值作为参数调用的函数:

void parseXString(String value){
  int amountX = (value.length() / 2) + 1;
  int seperatorIndex = value.indexOf('_');
  int secondSeperator = 0;

  for(int i = 0; i < amountX; i++){
    String xPoint = "";

    if(i == 0){
      xPoint = value.substring(0, seperatorIndex);
    }else{
      xPoint = value.substring(seperatorIndex + 1, secondSeperator);
    }

    sendMessage((String)i + " X = " + xPoint + " || SEP: " + (String)seperatorIndex + " / " + (String)secondSeperator );

    seperatorIndex = value.indexOf("_", seperatorIndex + 1);
    secondSeperator = value.indexOf("_", seperatorIndex + 1);


  }

  sendMessage("Last X = " + value.substring(seperatorIndex + 1));
}

sendMessage 函数会将值返回给正在运行的 Java 应用程序。我得到的输出是这样的:

0 X = 1 || SEP: 1 / 0
1 X = 3 || SEP: 3 / 5
2 X = 2 || SEP: 5 / 7
3 X = 2 || SEP: 7 / -1
4 X = 1 || SEP: -1 / 1
Last X = 2_3_2_2

如您所见,在第二次迭代中应该返回值 2 而不是 3

我认为seperatorIndexes 有问题,但我现在没有空缺(以这种方式工作很长时间)。

所以我的问题很简单。为什么我没有得到正确的价值/我该如何解决这个问题?

【问题讨论】:

    标签: c arduino substring indexof


    【解决方案1】:

    您的错误是您在第一次迭代中增加了seperatorIndex。因此,seperatorIndex 在您的第二次迭代中为 3。

    您应该将增加seperatorIndex 的部分放入if(i == 0) 条件的else 部分。执行此操作时,您还必须在条件的 if 部分增加 secondSeperator

    【讨论】:

    • 哇,解决方案就是这么简单...非常感谢您的时间和回答!你真的拯救了我的一天
    猜你喜欢
    • 2016-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多