0

JavaString.startsWith()中需要某种通配符的快速问题。

我需要检查链接是否以http://本地驱动器(等)开头c:\d:\但我不知道驱动器号。

所以我想我需要类似的东西myString.startsWith("?:\\")

有任何想法吗?

干杯

为这一点欢呼,但我认为我需要在此基础上再做一点。

我现在需要照顾

1.http://
2.ftp://
3.file:///
4.c:\
5.\\

这是矫枉过正,但我​​们想确保我们已经抓住了他们。

我有

if(!link.toLowerCase().matches("^[a-z]+:[\\/]+.*")) {

它适用于任何字符或字符后跟 : (例如 http:、ftp:、C:)涵盖 1-4 但我不能满足 \\

我能得到的最接近的是这个(它有效,但在正则表达式中得到它会很好)。

if(!link.toLowerCase().startsWith("\\") && !link.toLowerCase().matches("^[a-z]+:[\\/]+.*")) {
4

3 回答 3

5

您将需要一个正则表达式,但不支持startsWith

^[a-zA-Z]:\\\\.*

^   ^     ^    ^
|   |     |    |
|   |     |    everything is accepted after the drive letter
|   |    the backslash (must be escaped in regex and in string itself)
|  a letter between A-Z (upper and lowercase)
start of the line

然后你可以使用yourString.matches("^[a-zA-Z]:\\\\")

于 2013-05-29T15:04:02.660 回答
2

您应该为此使用正则表达式。

Pattern p = Pattern.compile("^(http|[a-z]):");
Matcher m = p.matcher(str);
if(m.find()) {
   // do your stuff
}
于 2013-05-29T15:02:47.337 回答
1
String toCheck = ... // your String
if (toCheck.startsWith("http://")) {
   // starts with http://
} else if (toCheck.matches("^[a-zA-Z]:\\\\.*$")) {
    // is a drive letter
} else {
    // neither http:// nor drive letter
}
于 2013-05-29T15:02:46.250 回答