Java 替换所有正则表达式问题
Java replaceall regex issue
我正在尝试为每个辅音添加一个字母,但我遇到的问题是我不知道如何为小写和大写添加不同的字母。
我可以为此使用双正则表达式吗?那样的话,怎么办?
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// skapar en scanner
Scanner sc = new Scanner(System.in);
System.out.print("Skriv en rad text: ");
// tar användarens input och översätter den till rövarspråket.
String input = sc.nextLine();
System.out.println(input.replaceAll("([bcdfghjklmnpqrstvwxz])", "o"));
}
}
我认为如果您在正则表达式中使用 OR (|
) 应该可以工作
[bcdfghjklmnpqrstvwxz]|[BCDFGHJKLMNPQRSTVWXZ]
您可以使用 |
符号来匹配小写或大写字符。
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class HelloWorld
{
public static void main(String[] args)
{
String text =
"John writes about this, and John Doe writes about that," +
" and John Wayne writes about everything."
;
String patternString1 = "([b-z&&[^eiou]]|[B-Z&&[^EIOU]])";
Pattern pattern = Pattern.compile(patternString1);
Matcher matcher = pattern.matcher(text);
String replaceAll = matcher.replaceAll("");
System.out.println("replaceAll = " + replaceAll);
}
}
输出
replaceAll = J0Joh0hn0n w0wr0rit0tes0s ab0bout0t t0th0his0s, an0nd0d J0Joh0hn0n D0Doe w0wr0rit0tes0s ab0bout0t t0th0hat0t, an0nd0d J0Joh0hn0n W0Way0yn0ne w0wr0rit0tes0s ab0bout0t ev0ver0ry0yt0th0hin0ng0g.
我认为你的问题是一个更大程序的摘录。
import java.util.Scanner;
public class ScratchJava {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("Skriv en rad text: ");
String input = sc.nextLine();
String intermediate = input.replaceAll("([bcdfghjklmnpqrstvwxz])", "o");
System.out.println(intermediate.replaceAll("([BCDFGHJKLMNPQRSTVWXZ])", "X"));
}
}
您可以分两遍替换小写字母,另一遍替换大写字母。
我在标准库中找不到可以根据匹配条件在同一次传递中替换的方法,尽管对于大输入来说这会快得多。如果遇到性能问题,请考虑自己编写一个。
我正在尝试为每个辅音添加一个字母,但我遇到的问题是我不知道如何为小写和大写添加不同的字母。
我可以为此使用双正则表达式吗?那样的话,怎么办?
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// skapar en scanner
Scanner sc = new Scanner(System.in);
System.out.print("Skriv en rad text: ");
// tar användarens input och översätter den till rövarspråket.
String input = sc.nextLine();
System.out.println(input.replaceAll("([bcdfghjklmnpqrstvwxz])", "o"));
}
}
我认为如果您在正则表达式中使用 OR (|
) 应该可以工作
[bcdfghjklmnpqrstvwxz]|[BCDFGHJKLMNPQRSTVWXZ]
您可以使用 |
符号来匹配小写或大写字符。
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class HelloWorld
{
public static void main(String[] args)
{
String text =
"John writes about this, and John Doe writes about that," +
" and John Wayne writes about everything."
;
String patternString1 = "([b-z&&[^eiou]]|[B-Z&&[^EIOU]])";
Pattern pattern = Pattern.compile(patternString1);
Matcher matcher = pattern.matcher(text);
String replaceAll = matcher.replaceAll("");
System.out.println("replaceAll = " + replaceAll);
}
}
输出
replaceAll = J0Joh0hn0n w0wr0rit0tes0s ab0bout0t t0th0his0s, an0nd0d J0Joh0hn0n D0Doe w0wr0rit0tes0s ab0bout0t t0th0hat0t, an0nd0d J0Joh0hn0n W0Way0yn0ne w0wr0rit0tes0s ab0bout0t ev0ver0ry0yt0th0hin0ng0g.
我认为你的问题是一个更大程序的摘录。
import java.util.Scanner;
public class ScratchJava {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("Skriv en rad text: ");
String input = sc.nextLine();
String intermediate = input.replaceAll("([bcdfghjklmnpqrstvwxz])", "o");
System.out.println(intermediate.replaceAll("([BCDFGHJKLMNPQRSTVWXZ])", "X"));
}
}
您可以分两遍替换小写字母,另一遍替换大写字母。
我在标准库中找不到可以根据匹配条件在同一次传递中替换的方法,尽管对于大输入来说这会快得多。如果遇到性能问题,请考虑自己编写一个。