Разделить текст из строки Java

1

У меня длинный текст, который я хочу разбить на небольшие предложения. Ниже приводится мой текст.

Я пробовал считать слова в строковом методе? но там было дано решение разделить строку return trim.split("\\s+").length; , В моем тексте у меня нет пробелов.

సోషలిజం, అనే, మాటను, గబ్బు, పట్టించడమే, కాంగ్రెసు, వారి, వ్యూహమనీ, అంతవరకూ, ప్రజలలో, సోషలిజం, యెడవున్న, అభిమానాన్ని, ఎక్స్ప్లాయిట్, చెయ్యడం, దాని, ఎత్తుగడ, అనీ, అంటే, ఓ, మాటు, నా, మీద, పడిపోయావు, గుర్తుందా.

Я знаю, что split() используется для разделения строки. Но я не знаю, как разделить текст, так как нет места или другого регулярного выражения для разделения.

Следующий код работает для разделения текста

String string = "1234,56,789,10,1111111,1111112,12";
char[] ch = string.toCharArray();  
int comma_limit = 3;
int comma_count = 0;
for(int i=0;i<ch.length;i++) 
if (ch[i] == ',') {
    comma_count = comma_count + 1;

if (comma_count % comma_limit == 0)
{
ch[i] = '.';
System.out.println(ch);

     }
  }
Теги:
split
text

9 ответов

0
Лучший ответ

Отметьте это, как только вы получите 3 строки в цикле, вы можете увеличить количество разделенных..

    public void splitStr(){
        String str = "";
        String[] split_str = str.split(",");

        int len = split_str.length;

        int split_len = len/3;

        for (int i = 0; i< len; i++){
            String f1 ="";
            if(i == split_len){
                // first string 
                f1 = split_str[i];

                // You will get 3   f1 strings
                split_len += split_len+ i;
            }
        }
    }
  • 0
    Спасибо @satyan_android, я постараюсь дать вам знать.
1

Используйте метод split с разделителем запятых, он вернет массив разделенных строк, затем с помощью метода length получит его размер.

System.out.println(yourString.split(",").length);
  • 0
    Хотя этот код может ответить на вопрос, пожалуйста, объясните, почему он отвечает на вопрос.
1
static IEnumerable<string> Split(string str, int chunkSize)
{
    return Enumerable.Range(0, str.Length / chunkSize)
        .Select(i => str.Substring(i * chunkSize, chunkSize));
}

Вам необходимо проверить наличие угловых случаев.

0

Используйте String Builder вместо строки

StringBuilder sb = new StringBuilder();
sb.append("సోషలిజం,అనే,మాటను,గబ్బు,పట్టించడమే,కాంగ్రెసు,వారి,వ్యూహమనీ,అంతవరకూ,ప్రజలలో,సోషలిజం,యెడవున్న,అభిమానాన్ని,ఎక్స్‌ప్లాయిట్,చెయ్యడం,దాని,ఎత్తుగడ,అనీ,అంటే,ఓ,మాటు,నా,మీద,పడిపోయావు,గుర్తుందా");

int totalString = sb.toString().splitby(",").lenght();
  • 0
    Попробуйте StringBuilder, потому что он может хранить больше данных, чем строка
0

Если вы хотите разделить его на определенные части, используйте это.

String text = "SAMPLEs"; // <- this will contain the large text
int numberOfParts = 2; // the number of split parts

int partLength = text.length() / numberOfParts;

ArrayList<String> parts = new ArrayList<>();

for (int i = 0; i < numberOfParts; i++) {
    int start = partLength * i;
    int end = start + partLength;
    parts.add(text.substring(start, end));
    if (text.length() - end < partLength) {
        parts.add(text.substring(end, text.length()));
    }
}

for (int i = 0; i < parts.size(); i++) {
    System.out.println("PART " + i + " contains : " + parts.get(i));
}

Результат:

PART 0 contains : SAM
PART 1 contains : PLE
PART 2 contains : s
0

В разделении используйте "," для разделения на основе символа запятой. return trim.split(",").length;

  • 0
    Также на основе чего вы пытаетесь создать небольшие предложения?
  • 0
    Текст слишком велик для синтеза, и синтезатор падает. Вот почему сейчас я пытаюсь разбить текст на 2 или 3
Показать ещё 1 комментарий
0

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

divideString("This is my sentence! I would like to split this into 3 Strings with about the same length.", 3);

public static void divideString(String raw, int numberOfDivides) {
    int charsPerString = raw.length()/numberOfDivides;
    String[] refined = new String[charsPerString];
    for(int i=1; i < (raw.length()/charsPerString)+1; i++) {
        refined[i] = raw.substring((charsPerString*i)-charsPerString, charsPerString*i);
        System.out.println(refined[i]);
    }
}

Который вывел бы следующее:

This is my sentence! I would l
ike to split this into 3 Strin
gs with about the same length.
0

Вы можете разделить, используя запятую

String text = "సోషలిజం,అనే,మాటను,గబ్బు,పట్టించడమే,కాంగ్రెసు,వారి,వ్యూహమనీ,అంతవరకూ,ప్రజలలో,సోషలిజం,యెడవున్న,అభిమానాన్ని,ఎక్స్\u200Cప్లాయిట్,చెయ్యడం,దాని,ఎత్తుగడ,అనీ,అంటే,ఓ,మాటు,నా,మీద,పడిపోయావు,గుర్తుందా.";
String[] lines = text.split(",");
for (int i = 0; i < lines.length; i++) {
    System.out.println("SENTANCE  " + i + "  : "+ lines[i]);
}
0

Вот пример подстроки, которую вы спросили.

String longText = "సోషలిజం,అనే,మాటను,గబ్బు,పట్టించడమే,కాంగ్రెసు,వారి,వ్యూహమనీ,అంతవరకూ,ప్రజలలో,సోషలిజం,యెడవున్న,అభిమానాన్ని,ఎక్స్\u200Cప్లాయిట్,చెయ్యడం,దాని,ఎత్తుగడ,అనీ,అంటే,ఓ,మాటు,నా,మీద,పడిపోయావు,గుర్తుందా.";
int longTextLength = longText.length();
int partLength  = (int) longTextLength / 3;
String part1 = longText.substring(0, partLength);
String part2 = longText.substring(partLength, 2*(partLength));
String part3 = longText.substring(2*(partLength), longTextLength);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню