【问题标题】:Find char in string that is a digit and larger or equal to 2在字符串中查找大于或等于 2 的数字字符
【发布时间】:2023-03-21 18:01:01
【问题描述】:

我有一个包含如下数字的字符串:02101403101303101303140

如何迭代字符串以检查字符串中的数字是否 >= 2 并记住该数字在数组或列表中的索引以供进一步处理?

进一步的处理应该是替换子字符串。

例如:迭代器找到数字 2 并记住该字符的索引。 现在它从 2 中取出下一个字符并记住这个字符索引。

现在可以替换子字符串了。

假设有 21 个。现在我希望它变成 11 个 或者假设有 60 个,应该用 000000 替换。 第一个数字是“多少”的指标,第二个数字是“什么”。

或者有没有更好的方法来记住和替换某些子字符串?

提前谢谢你。

【问题讨论】:

  • 创建第二个空字符串并按字符解析您的输入字符,如果 char+1 当前字符告诉的次数。没有代码,因为它很可能是家庭作业。
  • 你的问题很不具体;它非常像“请为我做作业”。请告诉我们你到底在哪里卡住了;还是希望我们向您解释 Java 字符串处理的所有细节?
  • 没有代码。我想知道哪种方法最适合此操作。 zubergu 的方法非常好。所以存储索引不是一个好主意。动态创建字符串要好得多。所以我会继续这样做并发布代码。
  • 这是压缩算法的尝试/练习,不是吗? ;)
  • 是的,你可以这么说;)

标签: java string replace substring digit


【解决方案1】:

给你。但记得至少下次尝试

String str =  "02101403101303101303140";
StringBuilder sb = new StringBuilder();
for(int i=0; i < str.length(); i+=2)
  for(int j =0; j < Integer.parseInt(String.valueOf(str.charAt(i))); j++)
    sb.append(str.charAt(i+1));

System.out.print(sb.toString());

【讨论】:

  • 这也不正确,你为什么使用 2 的步幅?仅当值为&gt;=2 时,才应将其视为下一条字符指令的计数..
  • 在那里检查:P。我期待来自lkallas :)
  • 几乎是我需要的。我发布了完整的答案。谢谢!
【解决方案2】:

不确定我是否理解你的问题,你可以试试这样:

String mystring = "02101403101303101303140";
String target = "21";
String replacement = "11"
String newString = mystring.replace(target, replacement);

【讨论】:

  • 你是对的,现在我明白了这个问题。 @zubergu 的建议是正确的
【解决方案3】:
String str = "02101403101303101303140";

StringBuilder sb = new StringBuilder();
  for (int i = 0; i < str.length(); i++) {
      if(Integer.parseInt(String.valueOf(str.charAt(i))) >= 2) {
          int temp = Integer.parseInt(String.valueOf(str.charAt(i))) - 1;
          for (int j = 0; j < temp ; j++) {
              sb.append(str.charAt(i+1));
          }
      }
      else {
          sb.append(str.charAt(i));
      }
  }
  System.out.println(sb.toString());

这将产生:01101000011101000111010001110000,它是“http”的二进制(不带引号)。

谢谢大家!我真正需要的是推动正确的方向,并为此感谢 zubergu。 fr34k 也给出了最好的答案!

【讨论】:

    猜你喜欢
    • 2013-10-09
    • 1970-01-01
    • 2015-02-05
    • 1970-01-01
    • 1970-01-01
    • 2014-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多