替换 Java 中的最后两个字母
Replace last two letters in Java
我正在寻求有关我正在编写的代码的帮助,我希望它能替换最后两个字母。我正在编写一个程序,它将:
- 用“FRED”替换四个字母的单词
- 将以“ed”结尾的单词的最后两个字母替换为“id”
- 最后,将以“di”开头的单词替换为“id”的前两个字母
我对第二条规则有困难,我知道对于第 3 条我可以只使用 replaceFirst()
并使用第一条规则的长度,但我不确定如何具体交换字符串中的最后两个字符。
这是我目前的情况:
package KingFred;
import java.util.Scanner;
public class KingFredofId2 {
public static void main(String args[])
{
Scanner input = new Scanner(System.in);
String king = input.nextLine();
String king22 = new String();
String king23 = new String();
if(king.length()==4)
{
System.out.println("FRED");
}
String myString = king.substring(Math.max(king.length() - 2, 0));
if (myString.equals("ed"))
{
king22 = king.replace("ed", "id");
System.out.println(king22);
}
if(true)
{
king23 = king.replace("di", "id");
System.out.println(king23);
}
}
我是 Stack Overflow 的新手,如果这个问题不容易理解,请告诉我如何让我的问题更容易理解。
谢谢。
这是我能想到的解决替换最后两个字符的第二种情况的最简单方法。
import java.util.Scanner;
public class MyClass {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("Enter a line or a word: ");
String s = sc.nextLine();
//getting the length of entered string
int length = s.length();
//initializing a new string to hold the last two characters of the entered string
String extract = "";
//checking if length of entered string is more than 2
if (length > 2) {
//extracting the last two letters
extract = s.substring(length - 2);
//updating the original string
s = s.substring(0, length - 2);
}
//checking if the last two characters fulfil the condition for changing them
if (extract.equalsIgnoreCase("ed")) {
//if they do, concatenate "id" to the now updated original string
System.out.println(s + "id");
} else {
//or print the originally entered string
System.out.println(s + extract);
}
}
}
我相信评论已经给出了足够的解释,不需要进一步解释。
可能有一种方法可以更优化地组合正则表达式,但这行得通。
\b
- 单词边界(白色 space、标点等)。
\b(?:\w){4}\b
- 四字母单词
ed\b
- 以 ed
结尾的单词
\bdi
- 以 di
开头的单词
replaceAll(regex,b)
- 将 regex
匹配的内容替换为字符串 b
String s =
"Bill charles among hello fool march good deed, dirt, dirty, divine dried freed died";
s = s.replaceAll("\b(?:\w){4}\b", "FRED")
.replaceAll("ed\b", "id")
.replaceAll("\bdi", "id");
System.out.println(s);
打印
FRED charles among hello FRED march FRED FRED, FRED, idrty, idvine driid freid F
RED
我正在寻求有关我正在编写的代码的帮助,我希望它能替换最后两个字母。我正在编写一个程序,它将:
- 用“FRED”替换四个字母的单词
- 将以“ed”结尾的单词的最后两个字母替换为“id”
- 最后,将以“di”开头的单词替换为“id”的前两个字母
我对第二条规则有困难,我知道对于第 3 条我可以只使用 replaceFirst()
并使用第一条规则的长度,但我不确定如何具体交换字符串中的最后两个字符。
这是我目前的情况:
package KingFred;
import java.util.Scanner;
public class KingFredofId2 {
public static void main(String args[])
{
Scanner input = new Scanner(System.in);
String king = input.nextLine();
String king22 = new String();
String king23 = new String();
if(king.length()==4)
{
System.out.println("FRED");
}
String myString = king.substring(Math.max(king.length() - 2, 0));
if (myString.equals("ed"))
{
king22 = king.replace("ed", "id");
System.out.println(king22);
}
if(true)
{
king23 = king.replace("di", "id");
System.out.println(king23);
}
}
我是 Stack Overflow 的新手,如果这个问题不容易理解,请告诉我如何让我的问题更容易理解。
谢谢。
这是我能想到的解决替换最后两个字符的第二种情况的最简单方法。
import java.util.Scanner;
public class MyClass {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("Enter a line or a word: ");
String s = sc.nextLine();
//getting the length of entered string
int length = s.length();
//initializing a new string to hold the last two characters of the entered string
String extract = "";
//checking if length of entered string is more than 2
if (length > 2) {
//extracting the last two letters
extract = s.substring(length - 2);
//updating the original string
s = s.substring(0, length - 2);
}
//checking if the last two characters fulfil the condition for changing them
if (extract.equalsIgnoreCase("ed")) {
//if they do, concatenate "id" to the now updated original string
System.out.println(s + "id");
} else {
//or print the originally entered string
System.out.println(s + extract);
}
}
}
我相信评论已经给出了足够的解释,不需要进一步解释。
可能有一种方法可以更优化地组合正则表达式,但这行得通。
\b
- 单词边界(白色 space、标点等)。\b(?:\w){4}\b
- 四字母单词ed\b
- 以ed
结尾的单词
\bdi
- 以di
开头的单词
replaceAll(regex,b)
- 将regex
匹配的内容替换为字符串b
String s =
"Bill charles among hello fool march good deed, dirt, dirty, divine dried freed died";
s = s.replaceAll("\b(?:\w){4}\b", "FRED")
.replaceAll("ed\b", "id")
.replaceAll("\bdi", "id");
System.out.println(s);
打印
FRED charles among hello FRED march FRED FRED, FRED, idrty, idvine driid freid F
RED