如何获取 indexOf 多个分隔符?
How to get indexOf multiple delimiters?
我正在寻找一种优雅的方法来查找一组定界符中的一个的首次出现。
例如,假设我的定界符集由 {";",")","/"}
.
组成
如果我的字符串是
"aaa/bbb;ccc)"
我想得到结果 3("/"
的索引,因为它是第一个出现的)。
如果我的字符串是
"aa;bbbb/"
我想得到结果 2(";"
的索引,因为它是第一个出现的)。
等等。
如果String不包含任何分隔符,我想return -1
.
我知道我可以先找到每个定界符的索引,然后计算索引的最小值,忽略 -1
。这段代码变得非常繁琐。我正在寻找一种更短、更通用的方式。
通过regex,可以这样,
String s = "aa;bbbb/";
Matcher m = Pattern.compile("[;/)]").matcher(s); // [;/)] would match a forward slash or semicolon or closing bracket.
if(m.find()) // if there is a match found, note that it would find only the first match because we used `if` condition not `while` loop.
{
System.out.println(m.start()); // print the index where the match starts.
}
else
{
System.out.println("-1"); // else print -1
}
在分隔符列表中搜索输入字符串中的每个字符。如果找到,则打印索引。
您还可以使用 Set 来存储分隔符
下面的程序会给出结果。这是使用 RegEx 完成的。
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class FindIndexUsingRegex {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
findMatches("aaa/bbb;ccc\)",";|,|\)|/");
}
public static void findMatches(String source, String regex) {
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(source);
while (matcher.find()) {
System.out.print("First index: " + matcher.start()+"\n");
System.out.print("Last index: " + matcher.end()+"\n");
System.out.println("Delimiter: " + matcher.group()+"\n");
break;
}
}
}
输出:
First index: 3
Last index: 4
Delimiter: /
我正在寻找一种优雅的方法来查找一组定界符中的一个的首次出现。
例如,假设我的定界符集由 {";",")","/"}
.
如果我的字符串是
"aaa/bbb;ccc)"
我想得到结果 3("/"
的索引,因为它是第一个出现的)。
如果我的字符串是
"aa;bbbb/"
我想得到结果 2(";"
的索引,因为它是第一个出现的)。
等等。
如果String不包含任何分隔符,我想return -1
.
我知道我可以先找到每个定界符的索引,然后计算索引的最小值,忽略 -1
。这段代码变得非常繁琐。我正在寻找一种更短、更通用的方式。
通过regex,可以这样,
String s = "aa;bbbb/";
Matcher m = Pattern.compile("[;/)]").matcher(s); // [;/)] would match a forward slash or semicolon or closing bracket.
if(m.find()) // if there is a match found, note that it would find only the first match because we used `if` condition not `while` loop.
{
System.out.println(m.start()); // print the index where the match starts.
}
else
{
System.out.println("-1"); // else print -1
}
在分隔符列表中搜索输入字符串中的每个字符。如果找到,则打印索引。 您还可以使用 Set 来存储分隔符
下面的程序会给出结果。这是使用 RegEx 完成的。
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class FindIndexUsingRegex {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
findMatches("aaa/bbb;ccc\)",";|,|\)|/");
}
public static void findMatches(String source, String regex) {
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(source);
while (matcher.find()) {
System.out.print("First index: " + matcher.start()+"\n");
System.out.print("Last index: " + matcher.end()+"\n");
System.out.println("Delimiter: " + matcher.group()+"\n");
break;
}
}
}
输出:
First index: 3
Last index: 4
Delimiter: /