Java删除指定字符串中末尾的星号
时间: 2023-06-02 20:04:16 浏览: 165
可以使用 String类的 replaceAll()方法来删除指定字符串中末尾的星号。具体的代码实现如下:
String str = "abc***";
String result = str.replaceAll("\\*+$", "");
System.out.println(result);
输出结果为:abc。
请注意,上述代码中的正则表达式 "\\*+$"表示的是匹配字符串末尾的所有星号(*号),并将其替换为空字符串(即删除)。
相关问题
编写一个方法,传入两个字符串,分别使用 String、StringBuffer 和 StringBuilder 来进行以下操作: 反转第一个字符串。 将第一个字符串中的元音字母替换为星号 (*)。 将第二个字符串添加到第一个字符串的末尾,重复执行 1000 次。
编写一个方法实现这样的操作,我们需要分别使用 String、StringBuffer 和 StringBuilder 类来完成。首先,我们需要注意的是 String 类是不可变的,所以在每次操作中实际上都会创建新的字符串对象。而 StringBuffer 和 StringBuilder 类则是可变的,它们在进行字符串拼接和修改操作时效率更高。
以下是使用 Java 语言实现的一个示例方法:
```java
public class StringOperation {
public static void performStringOperations(String str1, String str2) {
// 使用 String 类型
String reversedStr1 = new StringBuilder(str1).reverse().toString();
String vowelsReplacedStr1 = replaceVowels(reversedStr1);
String finalStr1 = repeatAppend(vowelsReplacedStr1, str2, 1000);
System.out.println("String result: " + finalStr1);
// 使用 StringBuffer 类型
StringBuffer sb = new StringBuffer(str1);
sb.reverse();
String reversedStr1Sb = sb.toString();
sb = new StringBuffer(reversedStr1Sb);
sb.replace(0, sb.length(), replaceVowels(reversedStr1Sb));
String finalStr1Sb = repeatAppendSB(sb, str2, 1000);
System.out.println("StringBuffer result: " + finalStr1Sb);
// 使用 StringBuilder 类型
StringBuilder sb2 = new StringBuilder(str1);
sb2.reverse();
String reversedStr1Sb2 = sb2.toString();
sb2 = new StringBuilder(reversedStr1Sb2);
sb2.replace(0, sb2.length(), replaceVowels(reversedStr1Sb2));
String finalStr1Sb2 = repeatAppendSB(sb2, str2, 1000);
System.out.println("StringBuilder result: " + finalStr1Sb2);
}
private static String replaceVowels(String str) {
return str.replaceAll("[aeiouAEIOU]", "*");
}
private static String repeatAppend(String str1, String str2, int times) {
String result = str1;
for (int i = 0; i < times; i++) {
result += str2;
}
return result;
}
private static String repeatAppendSB(StringBuffer sb, String str, int times) {
for (int i = 0; i < times; i++) {
sb.append(str);
}
return sb.toString();
}
private static String repeatAppendSB(StringBuilder sb, String str, int times) {
for (int i = 0; i < times; i++) {
sb.append(str);
}
return sb.toString();
}
public static void main(String[] args) {
StringOperation.performStringOperations("HelloWorld", "Java");
}
}
```
在这个例子中,我们创建了一个名为 `StringOperation` 的类,并在其中定义了 `performStringOperations` 方法。这个方法接收两个字符串参数 `str1` 和 `str2`,并分别使用 String、StringBuffer 和 StringBuilder 来完成指定的操作。由于性能原因,通常在实际应用中会优先选择 StringBuffer 或 StringBuilder,尤其是涉及到大量字符串拼接操作时。
输入一个字符串代表中文姓名,姓名各个汉字之间无空格,但姓名前后允许出现数量不定的空格; 如果输入的姓名是复姓,则需要在输入的最后加上星号*进行标注,复姓都只包含两个汉字,不会出现多于两个汉字的复姓; 输出两行字符串,分别是“姓”和“名”,“名”的末尾无换行。
好的,可以参考以下 Java 代码实现:
```java
import java.util.Scanner;
public class ChineseNameParser {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入中文姓名:");
String input = scanner.nextLine().trim(); // 去掉输入字符串前后的空格
// 判断是否为复姓
String lastName;
String firstName;
if (input.endsWith("*")) {
lastName = input.substring(0, 2); // 取前两个字符作为姓
firstName = input.substring(2, input.length() - 1); // 取第三个字符到倒数第二个字符作为名
} else {
lastName = input.substring(0, 1); // 取第一个字符作为姓
firstName = input.substring(1); // 取除第一个字符以外的所有字符作为名
}
// 输出结果
System.out.println("姓:" + lastName);
System.out.print("名:" + firstName);
}
}
```
在上面的代码中,首先使用 `Scanner` 类获取用户输入的中文姓名,并使用 `trim()` 方法去掉输入字符串前后的空格。然后判断输入的姓名是否为复姓,如果是,则取前两个字符作为姓,取第三个字符到倒数第二个字符作为名;否则,取第一个字符作为姓,取除第一个字符以外的所有字符作为名。最后输出结果,其中第二行字符串末尾没有换行符。
阅读全文