簡體   English   中英

如何用星號替換所有匹配的整數字符

[英]How to replace all matching integer characters with asterisks

我是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;

 }
 }

但它返回一條錯誤消息:

線程“主”中的異常java.lang.NumberFormatException:對於輸入字符串:“ * 23 * 23”

有誰知道如何使這項工作?

在調用replaceAll之前,需要在第一個字符之后獲取所有內容的substring 例如,

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

說明: (?<!^) :如果字符不在行首。 (即,行首的負回溯)

1 :匹配1。

全面電話要求您更換:

public static String processLine(int inputLine) {

    String convert = Integer.toString(inputLine);
    return inputLine.replaceAll("(?<!^)1", "*");
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM