2012-01-19 8 views
2

У меня есть строка в java неопределенной длины, и мне нужно взять первые 3 и последние 3 символа и поместить их в новые строки. Есть ли простой способ сделать это?Возьмите (n) символы из строки

+3

да есть, подстрока() на основе длины струны – milan

+1

Вы пробовали с помощью метода. substring (int begin, int end)? – Rohan

+0

Каков трудный путь, который вы уже знаете? – Johnydep

ответ

5

Забавно, все решения глючат (update: кроме сообщения с регулярным выражением) и может привести к StringIndexOutOfBoundsException, когда длина входной строки меньше 3 (вопрос явно говорит, что длина не определена). Если предположить, что ул не равно нулю, то правильный путь будет:

String first = str.substring(0, Math.min(str.length(), 3)); 
String second = str.substring(Math.max(0, str.length() - 3), str.length()); 
+0

Это не является действительным как таковым. Оп попросил получить первые три и последние три символа строки. Это невозможно для строк с менее чем тремя символами. Поэтому я думаю, что исключение «недопустимый аргумент» было бы более на месте, если строка имеет менее трех символов./ –

+0

Зависит от контекста, он может захотеть иметь 2/1 или ничего. Для первого мое решение правильное, для последнего правильное правильное выражение. – milan

2

str.substring(0, 3) + str.substring(str.length - 3)

EDIT:

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

Pattern p = Pattern.compile("^(.{3}).*(.{3})$"); 
Matcher m = p.matcher(str); 
if (m.find()) { 
    String s1 = m.group(1); 
    String s2 = m.group(2); 
} 
+0

если str.length меньше 3, то не будет соответствия. – milan

1
new_string = old_string.substring(0,3) + 
old_string.substring(old_string.lenght() - 3) 
0

Как милан уже сказал, подстрока путь здесь. Вы можете увидеть некоторые примеры использования here.

String FullName = "Cande Nauer"; 
String FirstNameChars = ""; 
FirstNameChars = FullName.substring(0, 3); 

В этом примере FirstNameChars будет «Can». Чтобы получить последние три символа, вам нужно будет сначала получить длину строки.

+0

Ваша длина должна быть '3', а не' 2' –

+0

. Вы абсолютно прав Петр. Большое спасибо! – MacLuq

5

Вы можете использовать метод подстроки: "Привет, мир!"

String text = "Hello world!"; 
String newText = text.substring(0, 3) + text.substring(text.length-3); 

Это займет и создайте новую строку, которая является «Helld!».

Если вы ищете способ, который вы можете использовать:

String trimThreeCharacters(text){ 
    return text.substring(0,3) + text.substring(text.length-3); 
} 
+0

Правильно, что происходит, когда String text = "yo" :) – milan

1

См documentation

public class Substring { 

     public static void main(String[] args) { 
       String input = "very long string, with random content"; 
       System.out.println(input.substring(0, 3)); 

       int length = input.length(); 
       System.out.println(input.substring(length - 3)); 
     } 
} 

Результат

ver 
ent 
1

Другой способ сделать это

public class MyString 
{ 
    private String value; 

    public MyString(String p_value) 
    { 
     value = p_value; 
    } 

    public String getFirstThree() 
    { 
     return value.substring(0, 3); 
    } 

    public String getLastThree() 
    { 
     return value.substring(value.length() - 3); 
    } 

    public String getNewString() 
    { 
     return getFirstThree() + getLastThree(); 
    } 


    public static void main(String[] args) 
    { 
     MyString example = new MyString("hello world"); 
     String newString = example.getNewString(); 
      System.out.println(newString); 


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