Если вы беспокоитесь об осложнениях, которые могут возникнуть в будущем, посмотрите, хотите ли вы использовать метод рок-сплошной утилиты, который может справиться с любым шаблоном токена и любым , которые вы бросаете на него. (Вероятно, это так!) [/ G2]
NB удивлен, обнаружив, что люди Apache Commons, похоже, не предоставили это, например. в StringUtils
.
Также я предлагаю, чтобы это было флагом в Pattern
: i..e INCLUDE_SEPARATORS
.
Но это довольно просто, если вы используете Pattern
и Matcher
справа:
// NB could be a different spec for identifying tokens, of course!
Pattern sepAndTokenPattern = Pattern.compile("(.*?)(\\w+)");
Matcher matcher = sepAndTokenPattern.matcher( stringForTokenising );
List<String> tokenAndSeparatorList = new ArrayList<String>();
// for most processing purposes you are going to want to know whether your
// combined list of tokens and separators begins with a token or separator
boolean startsWithToken = true;
int matchEnd = -1;
while (matcher.find()) {
String preSep = matcher.group(1);
if (!preSep.isEmpty()) {
if( tokenAndSeparatorList.isEmpty() ){
startsWithToken = false;
}
// in implementation you wouldn't want these | characters, of course
tokenAndSeparatorList.add("|" + preSep + "|"); // add sep
}
tokenAndSeparatorList.add("|" + matcher.group(2) + "|"); // add token
matchEnd = matcher.end();
}
// get trailing separator, if there is one:
if( matchEnd != -1 ){
String trailingSep = stringForTokenising.substring( matchEnd );
if( ! trailingSep.isEmpty() ){
tokenAndSeparatorList.add( "|" + trailingSep + "|" );
}
}
System.out.println(String.format("# starts with token? %b - matchList %s", startsWithToken, tokenAndSeparatorList));
Я думаю, вам нужно заменить вторую запятую ключевым словом логического оператора: WHERE username = 'AbbieH' AND password = 'pui8Aifi';