在过去的几天里,我读了很多类似的问题,但没有一个真正回答了我正在寻找的问题。因此,发布这个问题。
我有一个字符串,例如:
String myString = "Rule2 = if(event = 'Veteran''s Day', 'Day1', 'Day2')";
我希望将其更改为以下内容:
myString = "RULE2=IF(EVENT='Veteran''s Day', 'Day1', 'Day2')";
即除了单引号内的文本之外的所有文本都被修剪掉多余的空格并转换为 upperCase()。
我想我可以使用正则表达式来提取 [Rule2,if,event] 并使用 String.replaceAll() 等。运气不好。今天已经是第三天了。我的头现在已经停止工作了。请帮忙。
如有任何指点,将不胜感激。
我认为使用
Pattern
类和正则表达式可以解决你的问题。
下面是示例实现:
// Regular expression to match text within single quotes
Pattern pattern = Pattern.compile("'(.*?)'"); // The java.util.regex.Pattern class
Matcher matcher = pattern.matcher(input); // The java.util.regex.Matcher class
StringBuilder result = new StringBuilder();
int lastIndex = 0;
while (matcher.find()) {
String outsideQuotes = input.substring(lastIndex, matcher.start());
result.append(outsideQuotes.replaceAll("\\s+", "").toUpperCase());
result.append(input.substring(matcher.start(), matcher.end()));
lastIndex = matcher.end();
}
// Append the remaining text after the last match
if (lastIndex < input.length()) {
result.append(input.substring(lastIndex).replaceAll("\\s+", "").toUpperCase());
}
// result.toString() is the final String result.
希望这有帮助。
您可以实现自己的函数来执行此操作,并使用布尔值来检查字符串部分是否在单引号中。