当前位置: 首页 > 知识库问答 >
问题:

修改字符串Java

班承恩
2023-03-14

我有一个String,String a=newNumber"*"nn"差异;newNumber=106,nn=3和差异=3。

输出:106*3

我想修改这个字符串,使输出变成(35*3 1)*3 3,然后用这个新字符串我想再次修改它,使它变成((11*3 2)*3 1)*3 3,基本上我只需要替换新的数字,它是106,并且一直变为11,正如你所看到的,我试图只修改newNumber并用另一个替换它,同时保持整个字符串不变,我只是替换并添加它,这是如何实现的?输出应该是这样的,输出:

106*3+3
(35*3+1)*3+3
((11*3+2)*3+1)*3+3

我在用步骤求解一个方程,公式无关紧要,我只是想弄清楚如何用另一个数字替换新的数字,并在方程中添加新的括号来修改字符串。我希望我用你能理解的方式写下我的问题,我非常感谢你的帮助。

共有3个答案

邵诚
2023-03-14

java中的字符串是不可变的。您必须使用StringBuilder或字符串缓冲区

云宜人
2023-03-14

我无法得到与您相同的输出,但这里的代码试图解决这个问题,我认为它可能会给您一些帮助,尽管您可以解决这个问题。

将数分解为素数,并将素数加到结果中。由于我们正在替换字符串并添加字符串,因此最好使用StringBuilder

import java.io.PrintStream;
import java.util.Arrays;

public class StringSimplification {
    public static PrintStream out = System.out;
    public static final boolean prime[];
    public static final int SIZE = 1000000;

    static {
        prime = new boolean[SIZE];
        Arrays.fill(prime, true);
        prime[0] = prime[1] = false;
        //Sieve of Eratosthenes algorithm to find weather number is prime
        for (int i = 2; i < SIZE; i++)
            if (prime[i])
                for (int j = i * 2; j < SIZE; j += i)
                    prime[j] = false;
    }
    //simplifies your String expression
    public static String simplify(final String expression) {
        StringBuilder result = new StringBuilder("");
        String exp = "";
        for (char ch : expression.toCharArray()) {
            if (Character.isDigit(ch))
                exp += ch;
            else {
                if (isNumber(exp)) {
                    String simplified = getExpression(Integer.parseInt(exp));
                    result.append(simplified+ch);
                    exp = "";//clearing exp
                };
            }
        }
        result.append(exp);
        return result.toString();
    }
    //returns weather number is prime or not
    static boolean isPrime(final int val) {
        return prime[val];
    }

    static String getExpression(final int val) {
        if (val == 0 || val == 1 || prime[val])
            return "(" + val + ")";
        int prev = 1;
        int div = 1;
        for (int i = 1; i < val; i++) {
            if (val % i == 0) {
                prev = i;
                div = val / i;
            }
        }
        return getExpression(prev) + "*" + getExpression(div);
    }
    //Check's weather the expression is number
    public static boolean isNumber(final String s) {
        for (var c : s.toCharArray())
            if (!Character.isDigit(c))
                return false;

        return s.length() > 0;
    }

    public static void main(final String... $) {
        out.println(simplify("106*3+3"));
        out.println(simplify("1024*3+3"));
    }
}

输出:

(53)*(2)*(3)+3
(2)*(2)*(2)*(2)*(2)*(2)*(2)*(2)*(2)*(2)*(3)+3
壤驷敏学
2023-03-14

您实际上不能修改Strings,但是您可以像这样使用replace eFirst()

s = s.replaceFirst("106", "(35*3+1)");
s = s.replaceFirst("35", "(11*3+2)");

 类似资料:
  • 修改字符串 到目前为止,我们简单地搜索了一个静态字符串。正则表达式通常也用不同的方式,通过下面的 RegexObject 方法,来修改字符串。 方法/属性 作用 split() 将字符串在 RE 匹配的地方分片并生成一个列表, sub() 找到 RE 匹配的所有子串,并将其用一个不同的字符串替换 subn() 与 sub() 相同,但返回新的字符串和替换次数

  • 本文向大家介绍C++ 修改字符串文字,包括了C++ 修改字符串文字的使用技巧和注意事项,需要的朋友参考一下 示例 C ++ 11 "hello world" 是字符串文字,因此对其进行修改会产生未定义的行为。 str上面示例中的初始化在C ++ 03中已正式弃用(计划从该标准的将来版本中删除)。2003年之前,许多编译器可能对此发出警告(例如,可疑转换)。2003年之后,编译器通常会警告不要使用转

  • 问题内容: 曾经有人要求我创建一个给定字符串的函数,然后从字符串中删除一些字符。 是否可以在Python中执行此操作? 可以对列表执行此操作,例如: 我想要对字符串执行此功能。我能想到的唯一方法是将字符串转换为列表,删除字符,然后将其重新连接回字符串。但是然后我将不得不返回结果。例如: 我了解为什么此功能无法使用。问题是是否有可能在Python中执行此操作?如果是这样,是否可以在不复制字符串的情况

  • 我如何通过按一个按钮将变量day传递给apiInterface类? 片段FragJornadas,我想从这里将变量传递给@get in接口? TodaSadapter } 我要获取的url是: “server.php?action=getresultados&cmp=328&jor=1&tmp=2018/2019” 这是一个错误: java.lang.IllegalArgumentExceptio

  • 我正在做一个语言翻译项目,但在中间的某个地方卡住了。 我有这样的情况,有一根绳子 我想得到 即提取带引号的子字符串,去掉“$”并用新的子字符串替换原始子字符串。 我可以提取和更改引用的子字符串,但当我尝试用原始子字符串替换它们时,它不起作用。要显示示例代码: 我不知道为什么替换失败。会感谢你的帮助。

  • 默认情况下 Eclipse 字符集为 GBK,但现在很多项目采用的是 UTF-8,这是我们就需要设置我们的 Eclipse 开发环境字符集为 UTF-8, 设置步骤如下: 在菜单栏选择 Window -> Preferences -> General -> Workspace -> Text file encoding,在 Text file encoding 中点击 Other,选择 UTF-8