我有一个带有一些文字的字符串,f.e。 " Thisisalongwordtest和我想要tocutthelongword分段"
现在我想用空白切两个单词。如果单词超过10个字符,则应该删除该单词。
结果应该是: " Thisisalon gwordtest,我想把它们分成几部分"
如何有效地实现这一目标?
答案 0 :(得分:2)
String newString = oldStr.replaceAll("\\w{10}","$0 "))
以您的示例为例,newString
为:
Thisisalon gwordtest and I want tocutthelo ngword in pieces
避免在具有完全10个字符的单词之后添加空格:
str.replaceAll("\\w{10}(?=\\w)","$0 "));
答案 1 :(得分:2)
.replaceAll("(\\w{10})(?=\\w)", "$1 ")
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
希望这有帮助