比较字符串

时间:2016-04-15 13:29:41

标签: java string compare

我遇到以下问题:

我有一个带有值的序列:

“ORA-00904:TESTE:identificadorinválido”

我需要在查询中将此测试字段替换为空('')。

但是如果我的查询包含其他字段,其名称为例如TESTETE,而我替换为'',则表示错误,将{TESTE替换为and TESTETE for TE

我想替换``的TESTE和TESTETE让它如何。

我的示例查询是:

SELECT TESTE,TESTETE,fld1 FROM TBL

我的逻辑如下:

String oracleMsg = "ORA-00904: TESTE: identificador inválido";
String query = "SELECT TESTE, TESTETE, OUTRO FROM TBL";
String comp = "TESTE";

if (oracleMsg.contains(comp)){
    query = query.replace(comp, "''");
}
System.out.println(query);

结果:选择'',''TE,OUTRO来自TBL 预期结果? SELECT'',TESTETE,OUTRO FROM TBL

非常感谢!!!

2 个答案:

答案 0 :(得分:1)

使用正则表达式并使用单词边界锚点围绕您的模式。

 query = query.replaceAll("\\b"+comp+"\\b", "''");

如果您只想替换模式的一个实例,请使用replaceFirst代替replaceAll

答案 1 :(得分:0)

尝试将变量comp更改为

    NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setTimeZone:[NSTimeZone systemTimeZone]];
[dateFormat setLocale:[NSLocale currentLocale]];
[dateFormat setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZ"];
[dateFormat setFormatterBehavior:NSDateFormatterBehaviorDefault];
NSDate *date = [dateFormat dateFromString:@"1996-08-09T07:00:00Z"];
NSLog(@"date : %@", date);
[dateFormat setDateFormat:@"yyyy"];
NSString *finalStr = [dateFormat stringFromDate:date];
NSLog(@"finalStr : %@", finalStr);

由于逗号和空格,它只会删除“TESTE”。 您还可以将替换方法更改为

String comp = "TESTE, ";

现在你有一个干净的查询没有你的“TESTE”,没有 撇号!