正则表达式找到一个角色的位置

时间:2015-12-21 16:19:32

标签: java regex

我必须在字符串中找到*的出现,并且根据字符串中*的位置,必须执行某些操作。

if(* found in the beginning of the String) {
 do this
}
if(* found in the middle of the String) {
 do this
}
if(* found at the end of the String) {
 do this
} 

我使用matcher.find()选项,但它没有给出所需的结果。

1 个答案:

答案 0 :(得分:7)

使用String.indexOf

int pos = str.indexOf('*');
if (pos == 0) {
  // Found at beginning.
} else if (pos == str.length() - 1) {
  // Found at end.
} else if (pos > 0) {
  // Found in middle.
}

另一种方法是使用startsWith / endsWith / contains

if (str.startsWith('*')) {
  // Found at beginning.
} else if (str.endsWith('*')) {
  // Found at end.
} else if (str.contains('*')) {
  // Found in middle.
}

可能略微更高效,因为它避免了在以*结尾的情况下检查整个字符串。但是,代码的可读性应该是在这两者之间进行选择的首要考虑因素,因为在许多情况下性能差异可以忽略不计。

当然,如果您使用后一种方法,则无法获得*的实际位置。这取决于你真正想做的事情是否重要。