【问题标题】:Split text from string java从字符串 java 中拆分文本
【发布时间】:2019-07-14 23:38:39
【问题描述】:

我有一个很长的文本,我想分成几个小句子。以下是我的文本。

我尝试了Count words in a string method?,但给出的解决方案是拆分字符串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);

     }
  }

【问题讨论】:

  • 你能详细说明“小句子”是什么意思吗?我也注意到文本是用逗号分隔的。那么为什么不使用逗号作为拆分条件呢?
  • 小句子意思是我想把上面的句子分成2-3个句子。
  • 如果没有空格或任何其他正则表达式可以分割,你如何定义句子?
  • 老实说,我不知道示例文本是什么语言,因此我不知道句子如何以那种语言结尾。我的意思是,例如在英语中,正常句子可以以标点符号(句号、问号等)结尾。也许你可以用这个想法来分割你的文字
  • 我们是否可以计算字数并相应地拆分文本?

标签: java android text split


【解决方案1】:

使用带逗号分隔符的 split 方法,它将返回分隔字符串的数组,然后使用 length 方法获取其大小

System.out.println(yourString.split(",").length);

【讨论】:

  • 虽然此代码可以回答问题,但请解释为什么它回答了问题。
  • 这里两个单词之间没有空格,所以我们需要使用 split("$character") 否则我们可以直接使用 split 方法
【解决方案2】:
static IEnumerable<string> Split(string str, int chunkSize)
{
    return Enumerable.Range(0, str.Length / chunkSize)
        .Select(i => str.Substring(i * chunkSize, chunkSize));
}

您需要检查极端情况。

【讨论】:

    【解决方案3】:

    一旦你将在循环中获得 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;
                }
            }
        }
    

    【讨论】:

    • 谢谢@satyan_android,我会尽力让你知道的。
    【解决方案4】:

    在拆分中使用“,”来根据逗号字符进行拆分。 return trim.split(",").length;

    【讨论】:

    • 也基于你试图创建的小句子?
    • 文本太大,无法合成,导致合成器崩溃。这就是为什么现在我试图将文本分成 2 或 3
    • 在split中使用一个addition参数来限制split的个数,.split(",", n); n 是用于拆分 n 次的示例。如果文本太大,则使用 substring 方法将整个内容分成两三个部分。
    【解决方案5】:

    可以用逗号分隔

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

    【讨论】:

      【解决方案6】:

      使用字符串生成器代替字符串

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

      【讨论】:

      • 试试 StringBuilder 因为它可以存储比字符串更多的数据
      【解决方案7】:

      这是您询问的子字符串示例。

      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);
      

      【讨论】:

        【解决方案8】:

        如果您想将其拆分为特定部分,请使用此。

        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
        

        【讨论】:

          【解决方案9】:

          我对你的问题感到困惑。假设您希望实现某种自动换行,您可以执行以下操作。这可能不是最好的方法,但它是一种方法。

          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.
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-05-27
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多