我最近开始学习正则表达式。在这里,我有一个代码,一个字。如果它有" as"在其中,它根据条件替换/追加。
条件:
如果" as"在这个词的开头(如宇航员)然后删除单词" as" (结果将是" tronaut")。
如果" as"在单词的末尾(比如has)然后添加k;留一个空间;追加"?" (比如" hask?")。
import java.util.Scanner;
import java.util.regex.*;
public class test {
public static void main(String args[])
{
System.out.print("Enter a string : ");
Scanner console = new Scanner(System.in);
String input = console.nextLine();
Pattern frontPattern,backPattern;
Matcher matcher;
frontPattern = Pattern.compile("^(?i)as");
matcher = frontPattern.matcher(input);
if(matcher.find())
{
String replaced = matcher.replaceAll("");
System.out.println(replaced);
}
backPattern = Pattern.compile("(?i)as$");
matcher = backPattern.matcher(input);
if(matcher.find())
{
String replaced = input.replaceAll("(?i)(as)","$1k ?");
System.out.println(replaced);
}
}
}
我面临的问题是......如果输入是" LAS"然后所需的输出是" LASK?"但我不知道如何维持这个案子。它打印" Lask?"
答案 0 :(得分:2)
检查匹配的字符串是否为小写的条件。
backPattern = Pattern.compile("(?i)as$");
matcher = backPattern.matcher(input);
if(matcher.find())
{
if(matcher.group().isLowerCase()) {
String replaced = matcher.replaceAll("ask ?");
System.out.println(replaced);}
else{
String replaced = matcher.replaceAll("ASK ?");
System.out.println(replaced);}
}