如何用星号替换所有匹配的整数字符

时间:2018-03-05 20:33:50

标签: java

我对java很新,我的代码需要一些帮助。

我试图用星号(*)替换所有等于输入的第一个字符(第一个字符除外)的字符。

示例:

- 输入:1231231231

- 输出:123 * 23 * 23 *

这是我的代码:

import java.io.*;
import java.util.*;

public class Main {

public static void main(String[] args) {
  Scanner in = new Scanner(System.in);
  while(in.hasNextInt())
  {
      int inputLine = in.nextInt();
      System.out.println(processLine(inputLine));
  } 
  }

 public static long processLine(int inputLine) {

  String convert = Integer.toString(inputLine);
  String firstDigit = convert.substring(0,1);
  String filter = convert.replaceAll(firstDigit,"*");
  long result = Long.parseLong(filter);
  return result;

 }
 }

但它返回错误说:

线程中的异常" main" java.lang.NumberFormatException:对于输入字符串:" * 23 * 23"

有谁知道如何使这项工作?

2 个答案:

答案 0 :(得分:0)

在致电substring之前,您需要在第一个字符之后获取所有replaceAll。例如,

Scanner in = new Scanner(System.in);
while (in.hasNextInt()) {
    int inputLine = in.nextInt();
    String v = Integer.toString(inputLine), f = v.substring(0, 1);
    System.out.println(f + v.substring(1).replaceAll(f, "*"));
}

答案 1 :(得分:0)

您希望使用以下正则表达式匹配替换:

(?<!^)

说明: 1:如果角色不在该行的开头。 (即行开头的负面回顾)

public static String processLine(int inputLine) { String convert = Integer.toString(inputLine); return inputLine.replaceAll("(?<!^)1", "*"); } :匹配1。

完全致电您的替代人员:

core-pool-size: 20
max-pool-size: 20
throttle-limit: 10