2015-08-03 2 views
-1

У меня есть строка, и я хочу получить первые слова, содержащие до N символов вместе.Подстрока, содержащая слова до n символов

Например:

String s = "This is some text form which I want to get some first words";

Давайте предположим, что я хочу, чтобы слова до 30 символов, результат должен выглядеть следующим образом:

This is some text form which

Есть ли способ для этого ? Я не хочу изобретать велосипед.

EDIT: Я знаю метод подстроки, но он может сломать слова. Я не хочу, чтобы получить что-то вроде

This is some text form whi т.д.

+1

use 'String # substring (.,.)' – Satya

+1

Да, есть метод подстроки() 'Пожалуйста, Google. –

+0

Подстрока нарушает слова, я не хочу получать что-то вроде 'Это некоторая текстовая форма wh' и т. Д. –

ответ

1

Для достижения этой цели вы можете использовать регулярные выражения. Что-то вроде ниже, должны сделать работу:

String input = "This is some text form which I want to get some first words"; 
    Pattern p = Pattern.compile("(\\b.{25}[^\\s]*)"); 
    Matcher m = p.matcher(input); 
    if(m.find()) 
     System.out.println(m.group(1)); 

Это дает:

This is some text form which 

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

+0

'[^ \\ s]' может быть написанный как '\\ S'. Также я не уверен в '+', '*' чувствует себя лучше ИМО. – Pshemo

+0

@Pshemo: Я соглашаюсь на '*' и '+'. Я предпочитаю «[^ \ s]» просто потому, что, по-моему, это немного облегчает чтение. – npinti

+0

Правда, '[^ \ s]' может быть легче читать, но '\ S' проще писать :) – Pshemo

1

Разделите строку с пространством «», то Еогеасп подстрока добавить его в новую строку и проверить, не превышает ли длина новой подстроки или не превышает Лимит.

+0

Да, я знаю, как его реализовать, но я думал, что такой метод уже существует где-то, чтобы я мог его повторно использовать. –

+1

Насколько я знаю, нет такой библиотеки ... – sgpalit

1

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

String s = "This is some text form which I want to get some first words"; 
// Check if last character is a whitespace 
int index = s.indexOf(' ', 29-1); 
System.out.println(s.substring(0,index)); 

Выход This is some text form which;

Обязательное изменение: там нет проверки длины, так что позаботьтесь об этом.

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