在Java中用字符串分隔太长的单词

时间:2014-08-22 12:04:48

标签: java regex string

我有一个带有一些文字的字符串,f.e。 " Thisisalongwordtest和我想要tocutthelongword分段"

现在我想用空白切两个单词。如果单词超过10个字符,则应该删除该单词。

结果应该是: " Thisisalon gwordtest,我想把它们分成几部分"

如何有效地实现这一目标?

6 个答案:

答案 0 :(得分:2)

你正在寻找这个吗?或者我误解了这个问题?

String newString = oldStr.replaceAll("\\w{10}","$0 "))

以您的示例为例,newString为:

Thisisalon gwordtest and I want tocutthelo ngword in pieces

编辑Pshemo的好评

避免在具有完全10个字符的单词之后添加空格:

str.replaceAll("\\w{10}(?=\\w)","$0 "));

答案 1 :(得分:2)

.replaceAll("(\\w{10})(?=\\w)", "$1 ")

Tested with

test("abcde fghij klmno pqrst");
test("abcdefghijklmnopqrst");
test("abcdefghijklmnopqrstuv");
test("abcdefghij klmnopqrstuv");
test("abcdefghij klmnopqrst uv");

答案 2 :(得分:1)

  (?=\w{10,}\s)(\w{10})

应替换为

 "\1 "

你可以使用替换功能。

如果有数字或特殊字符

(?=\S{10,}\s)(\S{10}) 

可以使用。

答案 3 :(得分:1)

  • 将文字分成单词。 (按空间)
  • 剪切长词并用新词替换源词
  • 再次汇编文字

请注意,此方法会杀死多个空格。

答案 4 :(得分:1)

这是我写的代码检查一次.....

    public class TakingInput {

public static void main(String[] args) {

     String s="Thisisalongwordtest and I want tocutthelongword in pieces";

     StringBuffer sb;

     String arr[]=s.split(" ");

     for(int i=0;i<arr.length;i++){

        if(arr[i].length()>10){

            sb=new StringBuffer(arr[i]);

            sb.insert(10," ");

            arr[i]=new String(sb);

        }

     }

     for(String ss: arr){

         System.out.println(ss);//o/p: "Thisisalon gwordtest and I want tocutthelo ngword in pieces"

     }



}

}

答案 5 :(得分:1)

此代码将完全按照您的意愿执行。

首先创建一个方法,如果String长于10 char,则将其分割:

String splitIfLong(String s){
    if(s.length() < 11) return s + " ";
    else{
        String result = "";
        String temp = "";
        for(int i = 0; i < s.length(); i++){
            temp += s.charAt(i);
            if(i == 9)
                temp += " ";
                result += temp;
                temp = "";
        }
        return result + " ";
    }
}

然后使用Scanner读取由空格" "分隔的句子中的每个单词:

String s = "Thisisalongwordtest and I want tocutthelongword in pieces";

String afterSplit = "";

Scanner in = new Scanner(s);

然后为句子中的每个单词调用splitIfLong()方法。并将该方法返回的内容添加到新的String

while(in.hasNext())
        afterSplit += splitIfLong(in.next());

现在您可以根据需要使用新的String。如果你打电话:

System.out.println(afterSplit);

它会打印出来:

Thisisalon gwordtest and I want tocutthelo ngword in pieces

希望这有帮助

相关问题