【发布时间】:2013-07-27 23:09:55
【问题描述】:
UpperCaseConverter 类将输入文本转换为大写文本,不包括与正则表达式 "(?i)^((?!sht).)*" 匹配的单词。
我期望得到的是 1A0A-50-CRD-140-20002-063484C-N-01_Sht_1A.pdf 但结果是 1A0A-50-CRD-140-20002-063484C-N-01_Sht_1a.pdf。
字母的最后一部分怎么可能是大写除了.pdf
大写转换器
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class UpperCaseConverter {
private UpperCaseConverter(){};
public static String convert(String text, String regEx) {
StringBuilder toBeConverted = new StringBuilder(text);
Pattern pattern = Pattern.compile(regEx);
Matcher matcher = pattern.matcher(toBeConverted);
while(matcher.find()) {
String buf = toBeConverted.substring(matcher.start(), matcher.end()).toUpperCase();
toBeConverted.replace(matcher.start(), matcher.end(), buf);
}
return toBeConverted.toString();
}
}
*测试用例
import static org.junit.Assert.*;
import org.junit.Before;
import org.junit.Test;
public class UpperCaseConverterTest {
@Test
public void testUpperCase() {
String expect = UpperCaseConverter.convert("1a0A-50-CRD-140-20002-063484C-N-01_Sht_1a.pdf",
"(?i)^((?!sht).)*");
assertEquals("1A0A-50-CRD-140-20002-063484C-N-01_Sht_1A.pdf", expect);
}
}
【问题讨论】:
-
什么是
UpperCaseConverter? -
如果不向我们展示任何代码,除了猜测之外别无他法。您是否尝试将其关闭然后再打开?
-
它是我制作的一个类,用于将小写文本转换为大写,不包括与提供的 RegEx 匹配的单词。
-
@JakeJeon
Matcher.appendReplacement后跟Matcher.appendTail有什么问题。