简体   繁体   English

字符串中字符的第N次出现并获得值

[英]Nth occurence of character in string and get value

I am using the below code to find the nth occurrence of , (comma) in the string. 我使用下面的代码,找到的第n次出现,在字符串中(逗号)。 And once I get this, I need to get the value between this occurrence(nth) and next occurrence (n+1th occurrence) 而一旦得到,我需要获取此事件(nth)与下一个事件(n + 1个事件)之间的值

Please let me know if I am going wrong somewhere. 如果我在某处出错,请告诉我。

 int ine=nthOccurence(line,18);  
         String strErrorCode=line.substring(ine,line.indexOf(",", ine+1));
String errorCode=strErrorCode.substring(1, strErrorCode.length());

The function 功能

public static int nthOccurence(String strLine,int index)
  {

      char c=',';
            int pos = strLine.indexOf(c, index);
            while (index-- > 0 && pos != -1)
            {
                pos = strLine.indexOf(c, pos+1);
               // System.out.println("position is " +  pos);
            }
                return pos;
        }

Thanks. 谢谢。

Here's an alternative approach, also more readable: 这是另一种方法,也更具可读性:

public static String getAt(String st, int pos) {
    String[] tokens = st.split(",");
    return tokens[pos-1];
}

public static void main(String[] args) {
    String st = "one,two,three,four";
    System.out.println(getAt(st, 1)); // prints "one"
    System.out.println(getAt(st, 2)); // prints "two"
    System.out.println(getAt(st, 3)); // prints "three"
}

Something like this? 像这样吗

public static int nthOccurence(String strLine,int index){
  String[] items = strLine.split(",");
  if (items.length>=index)
      return items[index];
  else
      return "";//whatever you want to do it there's not enough commas
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM