2015-03-16 2 views
-10

В Java, у меня есть строка:Как удалить символы строки, кроме первого в Явы

James May, Jack Jones 

Я хотел бы, чтобы удалить символы, кроме первого и добавить точку. Retrun должен выглядеть как J. May, J. Jones

Как бы это сделать?

Я попробовал этот

for (int i=1; i<str.length();i++) 
    { 
     if (i%2==0) 
     { 
      dot=str.replaceAll("[a-z]", "."); 
      jTextArea2.setText(dot); 
     } 
    } 

Но заменить нижний регистр charatcers

+3

Вы уже пробовали что-нибудь? –

+2

Почему он не удаляет подстроку 'May'? –

+1

Есть много простых подходов к этому. Что вы пробовали? Почему это не получилось? На каких материалах вы его тестировали? Какие результаты вы получили? Что произошло, когда вы отлаживались? – Kon

ответ

0

Вы можете альтернативно использовать это, который работает, как вы хотите

String a = "James May"; 
String[] b = a.split(" "); 
String c = b[0].charAt(0) + ". "; 
for (int i = 1; i < b.length; i++) { 
    c += b[i] + " "; 
} 
System.out.println(c); 

или если вы хотите что-то, что делает его несколько раз Использование: (Кредит Авинаш Радж)

String a = "James May, Jack Jones, Jaime Martinez"; 
String[] b = a.split(", "); 
String c = b[0].replaceFirst("(?<=^.)\\S+", "."); 
for(int i = 1; i < b.length; i++) { 
c += ", " + b[i].replaceFirst("(?<=^.)\\S+", "."); 
} 
System.out.println(c); 
+0

Спасибо, но я ввожу строку с клавиатуры, и это работает только для 1-го имени. Для примера я типа «Джеймс Май, Джек Джонс ...», и это дает мне «Дж. Май, Джек Джонс, ..." –

+0

Я отредактировал –

+0

Это то, что я хочу. Большое вам спасибо! –

0

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

String a = "James May"; 
String[] c = a.split("\\s+"); 
String b = c[0].substring(0, 1) + ". " + c[1].substring(0, c[1].length()); 
System.out.println(b); 
+0

Спасибо, это это здорово, но мне нужно делать это больше раз. Например, если ввод «Джеймс Май, Джек Джонс ...» –

0

Как это

String str = "James May"; 
    String abr = 
      str.substring(0, 1)//get the first character 
      +". "// add a dot and space 
      +str.split(" ")[1];//get the last name 

EDIT: перекручивание через массив

for(String str : arrayOfNames){ 
    String str = "James May"; 
    String abr = 
      str.substring(0, 1)//get the first character 
      +". "// add a dot and space 
      +str.split(" ")[1];//get the last name 
      //do something with abr 
} 
+0

Спасибо, это здорово, но мне нужно делать это больше раз. Например, если ввод «Джеймс Мэй, Джек Джонс ...» –

+0

проверить редактирование. не знаете, как вы планировали хранить свой список имен. – joosdfi

1

Вы можете использовать этот класс и адаптировать его к своему собственному коду Java если вы сохранить исходную строку в формате "FirstName LastName" и использовать ", ", чтобы разделить строку "FirstName LastName, FirstName LastName".

public class StringEditor 
{ 
    String editMe = "James May, Jack Jones"; 

    public void runStringEdit() 
    { 
     String edit1 = editMe.replaceAll(",", ""); 
     System.out.println("After step one: "+edit1); 
     String[] edit2 = edit1.split(" "); 

     for(int i =0; i<edit2.length; i++) 
     { 
      int correctNum = i+1; 
      System.out.println("After part "+correctNum+" of step 2: "+edit2[i]); 
     } 

     for(int i =0; i<edit2.length; i++) 
     { 
      int correctNum = i+1; 
      if(correctNum%2!=0) 
      { 
       edit2[i]=edit2[i].charAt(0)+". "; 
       System.out.println("After part "+correctNum+" of step 3: "+edit2[i]); 
      } 
      else 
      { 
       try 
       { 
        if(!edit2[correctNum].equals("")) //Stops "," being added to last surname by causing a null pointer exception in the if statement 
        { 
         edit2[i]=edit2[i]+", "; 
        } 
       } 
       catch(Exception e) 
       { 

       } 

       System.out.println("After part "+correctNum+" of step 3: "+edit2[i]); 
      } 
     } 

     String finalEdit = ""; 

     for(int i =0; i<edit2.length; i++) 
     { 
      int correctNum = i+1; 
      finalEdit = finalEdit+edit2[i]; 
     } 

     System.out.println("After final step: "+finalEdit); 
    } 

    public static void main(String[] args) 
    { 
     StringEditor sE = new StringEditor(); 
     sE.runStringEdit(); 
    } 
} 

Конечный результат использования этого класса будет FirstName Intial. LastName, FirstName Intial. LastName, который будет равен J. May, J. Jones в этом случае.

Фактический результат показывает, как программа сделала это шаг за шагом и будет выглядеть следующим образом;

Outputs to console from code

Смежные вопросы