Заменить номера определенной подстроки в строке на Java - PullRequest
0 голосов
/ 28 августа 2018

В настоящее время я пытаюсь извлечь определенную подстроку строки и заменить ее содержимое. Цифры, чтобы быть точным. Числа меняются, поэтому я не могу взять всю строку. Например, у меня есть сообщение типа

String message = "hi John. You have two contracts listed: 
                  TV-70002548 and FV-50006578. The first contract 
                  ends on March 15th. I will pay you a final amount of 350 $."

В этой строке у меня есть набор различных номеров, но я хочу только извлечь номера контрактов и переписать их, как TV-70002548 -> TV-seven null null null two five four eight.

Я написал метод, который извлекает все цифры после V-, потому что этот символ уникален для номеров контрактов в строке:

   private String replaceContractNo(String pMessage, String pInput, String pOutput) {
        String contractno;
        contractno = pMessage.substring(pMessage.indexOf("V-")-2);
        return contractno.replaceAll(pInput, pOutput);
    }

Позже я хочу заменить цифры словами:

replaceContractNo(pMainMessage,"0"," null")
replaceContractNo(pMainMessage,"1"," one")

Это не работает, потому что сообщение записывается каждый раз. Есть ли простое решение этой проблемы?

Спасибо

Ответы [ 2 ]

0 голосов
/ 29 августа 2018

Так что этот код может быть уродливым, но он работает. Я уверен, что вы можете очистить его, но он выполняет свою работу (просто создайте новый файл, скопируйте и вставьте его, если хотите, и если вы не можете найти лучший алгоритм, дайте мне знать, и Я был бы рад помочь):

public class contract {

  public contract(){

  }
  public static String replaceContractNo(String pMessage, String pInput, String pOutput) {

      return pMessage.replaceAll(pInput, pOutput);
    }

    public static void main(String args[]){

      contract myContract = new contract();

      String message = "hi John. You have two contracts listed: TV-70002548 and FV-50006578. The first contract ends on March 15th. I will pay you a final amount of 350 $.";

      int start1 = message.indexOf("TV");
      System.out.println(start1);
      int end1 = message.indexOf(' ', start1);
      System.out.println(end1);
      String str1 = message.substring(start1, end1);
      System.out.println(str1);

      String test1 = replaceContractNo(str1, "0", "null");
      System.out.println("test1 = "+test1);

      int start2 = message.indexOf("FV");
      int end2 = message.indexOf(' ', start2);
      String str2 = message.substring(start2, end2);

      String test2 = replaceContractNo(str2, "5", "five");
      System.out.println("test2 = " +test2);

      message = message.replaceAll(str1, test1);
      message = message.replaceAll(str2, test2);

      System.out.println(message);

        }

    }
0 голосов
/ 28 августа 2018

Это то, что вы пытаетесь сделать?

str1.replaceAll(oldString, newString);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...