以字符串String s = ["",{"noticeType":"message","checked":1,"account":"331249269934526464"},{"noticeType":"email","checked":1,"account":""},{"noticeType":"sms","checked":0,"account":"331249269934526464"}]
为例,找出第2个左括号{出现的位置编号,
注意,如果是特殊字符的,需要双斜线来转义。 int leftBrace = StringUtils.getIndexOf(alarmNotice,"\\{", 2);
下面是getIndexOf方法的代码:
/** * 获取字符串中,某个子字符串第几次出现的位置编号 * @param data 指定字符串 * @param str 需要定位的特殊字符或者字符串 * @param num 第n次出现 * @return 第n次出现的位置索引 */ public static int getIndexOf(String data,String str,int num){ Pattern pattern = Pattern.compile(str); Matcher findMatcher = pattern.matcher(data); //标记遍历字符串的位置 int indexNum=0; while(findMatcher.find()) { indexNum++; if(indexNum==num){ break; } } return findMatcher.start(); }