2016-02-06 4 views
-5

я получил SMS-шаблон, как показано нижеКак правильно использовать String в этом случае?

Пользователь: XXXXXXXXXXXXXXXXXX, Ph: XXXXXXXXXX, Loc: XXXXXXXXXXXXXXXXXXXX, Площадь: XXXXXXXXXXXXXXXXXXXX, добавлено за доставкой на дом. Пожалуйста, ознакомьтесь подробности

где ХХХХХХ должна быть заполнена с динамическими значениями

Я пытался таким образом, как показано ниже

но когда я запустить программу на выходе я получаю

User: Kiran, Ph: 11111111111111, Loc: KiranXX, Area: KiranXX, added you for Home Delivery. Please review details 

Это добавляет XX до конца Это моя программа

import java.net.UnknownHostException; 

import org.apache.log4j.Logger; 

public class Test { 
    final static Logger logger = Logger.getLogger(Test.class); 

    public static void main(String args[]) throws UnknownHostException 
    { 

     String user = "Kiran"; 
     String phone = "11111111111111"; 
     String loc = "my location"; 
     String area = "my area"; 


     String message = "User: XXXXXXXXXXXXXXXXXX, Ph: XXXXXXXXXX, Loc: XXXXXXXXXXXXXXXXXXXX, Area: XXXXXXXXXXXXXXXXXXXX, added you for Home Delivery. Please review details\r\n" + 
       ""; 

     message = message.replace("XXXXXXXXXXXXXXXXXX", user); 
     message = message.replace("XXXXXXXXXX", phone); 
     message = message.replace("XXXXXXXXXXXXXXXXXXXX", loc); 
     message = message.replace("XXXXXXXXXXXXXXXXXXXX", area); 

     System.out.println(message); 


    } 

} 

Не могли бы вы рассказать мне, как решить эту проблему?

+1

Почему на земле вы используете крестики для этого? – jonrsharpe

+0

Это был шаблон, который мне дал, я знаю, что должен использовать регулярные выражения {user_name}, но я беспомощный – Pawan

+0

Посмотрите на 'String.format' –

ответ

5

Вы должны использовать это:

String template = "User: %s, Ph: %s, Loc: %s, Area: %s, added you for Home Delivery. Please review details\r\n"; 

String result = String.format(template, user, phone, loc, area); 

Javadoc of String.format() here

1

Сначала заменить, безусловно, не так.

Я БУДУ код так:

Edit:

message = message.replace("User: XXXXXXXXXXXXXXXXXX", "User: " +user); 
+1

Во-первых, вы можете объяснить, почему вы это сделаете? Во-вторых, что случилось с пространством после толстой кишки? –

+0

Да, вы обошли пробел после толстой кишки. Более того, я бы поставил \\ s +, что означает «по крайней мере один символ пробела», который является более гибким –

0

Мое предложение:

message = message.replace("User:\\s+X+", "User: " + user); 

Это:

  • игнорировать, как много пространства есть после того как пользователь: а иксы
  • игнорировать, сколько иксы есть, просто есть каждый из них
Смежные вопросы