如何每10个字分割一个字串?

Abb*_*y44 7 java string string-matching

我正在寻找一种方法,每10个字分割我的字符串块。我正在使用下面的代码。

我的输入将是一个长字符串。
例如:这是一个示例文件,可以用作该程序的参考,我希望每行每10个单词对这一行进行拆分(换行)。

private void jButton27ActionPerformed(java.awt.event.ActionEvent evt) {                                          

    String[] names = jTextArea13.getText().split("\\n");

           var S = names.Split().ToList();
           for (int k = 0; k < S.Count; k++) {
               nam.add(S[k]);
               if ((k%10)==0) { 
                   nam.add("\r\n");       
               }
           }

           jTextArea14.setText(nam);


output:
this is an example file that can be used as
a reference for this program, i want this line to
be split (newline) by every 10 words each.
Run Code Online (Sandbox Code Playgroud)

任何帮助表示赞赏。

Mic*_*rry 6

我正在寻找一种每10个字分割我的字符串块的方法

具有非捕获组的正则表达式是实现此目的的更简洁方法:

str = str.replaceAll("((?:[^\\s]*\\s){9}[^\\s]*)\\s", "$1\n");
Run Code Online (Sandbox Code Playgroud)

9上述例子只是words-1,所以如果你想要的是每20个单词拆分,例如,将其更改为19

这意味着您的代码可能变成:

jTextArea14.setText(jTextArea13.getText().replaceAll("((?:[^\\s]*\\s){9}[^\\s]*)\\s", "$1\n"));
Run Code Online (Sandbox Code Playgroud)

对我来说,这更具可读性。当然,在您的情况下它是否更具可读性取决于代码库的用户是否相当精通regex。

  • regex最好在这里使用。 (2认同)