Java 乘号来重复字符串的功能

要是你想在 Java 中达成字符串重复的效果,可以借助以下几种办法:

1、利用循环

java 复制代码
String result = "";
for (int i = 0; i < 4; i++) {
    result += "FF";
}
// 结果为 "FFFF"

2、使用StringBuilder

java 复制代码
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 4; i++) {
    sb.append("FF");
}
String result = sb.toString();
// 结果为 "FFFF"

3、采用 Java 11 引入的String.repeat方法

java 复制代码
String result = "FF".repeat(4);
// 结果为 "FFFF"

4、用例示范

java 复制代码
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class StringMultiplier {
    // 匹配 "字符串"*数字 格式的正则表达式
    private static final Pattern MULTIPLY_PATTERN = Pattern.compile("\"([^\"]*)\"\\s*\\*\\s*(\\d+)");

    /**
     * 处理包含多个字符串重复表达式的输入
     * 例如: "FF"*4 + "0"*2 会被处理为 FFFF00
     * @param input 包含字符串重复表达式的输入
     * @return 处理后的字符串
     */
    public static String processMultipliers(String input) {
        if (input == null || input.isEmpty()) {
            return "";
        }

        String result = input;
        Matcher matcher = MULTIPLY_PATTERN.matcher(result);

        // 循环处理所有匹配到的字符串重复表达式
        while (matcher.find()) {
            String str = matcher.group(1);  // 捕获引号内的字符串
            int times = Integer.parseInt(matcher.group(2));  // 捕获重复次数

            // 构建重复后的字符串
            String repeated = str.repeat(times);

            // 使用Pattern.quote和Matcher.quoteReplacement处理特殊字符
            String original = Matcher.quoteReplacement(matcher.group(0));
            result = result.replaceFirst(Pattern.quote(original), Matcher.quoteReplacement(repeated));

            // 更新Matcher以匹配替换后的字符串
            matcher = MULTIPLY_PATTERN.matcher(result);
        }

        return result;
    }

    public static void main(String[] args) {
        // 示例1: 处理单个表达式
        System.out.println(processMultipliers("\"FF\"*4"));  // 输出: FFFF

        // 示例2: 处理多个表达式和其他文本
        System.out.println(processMultipliers("A=\"FF\"*4 + \"0\"*2"));  // 输出: A=FFFF00

        // 示例3: 处理包含特殊字符的字符串
        System.out.println(processMultipliers("\"*.*\"*3"));  // 输出: *.**.**.*
    }
}
相关推荐
掉鱼的猫2 分钟前
agentscope-harness vs solon-ai-harness:Java 智能体「马具引擎」的双雄对决
java·openai
RainCity8 分钟前
Java Swing 自定义组件库分享(四)
java·笔记·后端
小短腿的代码世界9 分钟前
打印不止是QPrinter:深入Qt Print Support框架的内核设计与跨平台输出管道
开发语言·qt
性野喜悲10 分钟前
python将excel中的链接转成图片并替换链接展示在excel中【将pdf的第一页插入excel并将对应信息获取到插入签名等位置】
开发语言·python·excel
诙_11 分钟前
C++代码实践应用
开发语言·c++
谙弆悕博士13 分钟前
【附C语言源码】从零实现命令行贪吃蛇游戏
c语言·开发语言·学习·游戏·游戏程序·小游戏·贪吃蛇
带刺的坐椅21 分钟前
agentscope-harness vs solon-ai-harness:Java 智能体「马具引擎」的双雄对决
java·ai·llm·solon·agentscope·harness
Seven9723 分钟前
Paxos算法:如何解决分布式系统中的共识问题?
java
Evand J26 分钟前
【无人机编队控制程序4】复杂障碍环境下多无人机编队避障(人工势场法APF)与协同控制,MATLAB仿真例程
开发语言·matlab·无人机·控制·apf·避障