Java拆分和替换字符串

时间:2012-03-05 09:14:46

标签: java replace split midp removing-whitespace

我有一个字符串变量。字符串的示例如下:

abc
12345 cde123
hyz 
8755 3356

我想通过吐出空白来分配一个数组字符串。我想只拿它的前4个值。

stringArray[0] = abc;
stringArray[1] = 12345;
stringArray[2] = cde123;
stringArray[3] = hyz;

8755 3356不需要在此数组字符串中赋值。

但是,abc12345分隔换行符而不是空格。所以我尝试用我的函数替换换行符变为空格,如下所示:

Util.replaceStr(stringX, "\n", " ");

要将字符串溢出到数组字符串中,我会检测

的空白索引
int index= sMessage.indexOf(" ");

并将其置于循环

stringArray[i] = stringX.substring(0,index);
stringX=stringX.substring(index,stringX.length()-index);
index =stringX.indexOf(" ");

并将前4个值分配给它。然而,在我将换行符替换为空格后,将会有双空格,前四个数组将会是这样的

stringArray[0] = abc;
stringArray[1] = ;
stringArray[2] = 12345;
stringArray[3] = cde123;

如何通过跳过空格值来分配数组字符串? NETBEAN中没有分拆功能。我知道java了。 =)

6 个答案:

答案 0 :(得分:4)

编辑:此示例应与Java 1.1的目标一起使用

String text = "String text2 = text.replaceAll(\"[^\\p{Alpha} ]\", \"\");";
StringBuffer sb = new StringBuffer();
for(int i=0;i<text.length();i++) {
    char ch = text.charAt(i);
    if (Character.isLetter(ch) || Character.isWhitespace(ch))
        sb.append(ch);
}
String text2 = sb.toString();
System.out.println(text2);

打印

String text  textreplaceAllpAlpha

如果您想按空格分割,可以使用\s

String text = 
String[] words = text.split("\\s");

您似乎有多个空格(hyz之后有一个空格),您可以使用+表示一个或多个空格。

String text = "abc\n" +
        "12345 cde123\n" +
        "hyz \n" +
        "8755 3356\n";
String[] words = text.split("\\s+");
System.out.println(Arrays.toString(words));

打印

[abc, 12345, cde123, hyz, 8755, 3356]

答案 1 :(得分:1)

在java中有一个用于拆分的库函数,所以使用该函数进行拆分。您只需用空格替换新行,并使用以下函数。

String[] stringArray  = stringX.split("\\s");

答案 2 :(得分:1)

使用替换

将所有类型的空格转换为\n后:您可以使用\n\n执行替换\n,直到字符串不变。这样你可以确保没有双重空间。

使用正则表达式

您还可以使用一些正则表达式模式来查找单词。类似的东西:

\S+

应该足够了。你得到了所有非空白字符。如果您在字符串中找到前四个正则表达式,您将拥有所需的内容。

答案 3 :(得分:0)

只需拆分任何一组空格(在正则表达式中使用“+”)。你不会以这种方式结束由空格组成的组。

String[] words = text.split("\\s+");

答案 4 :(得分:0)

使用以下代码:

String[] array = yourString.split("\\s");/* s is uncapitalized.*/

\s表示:空格字符,[\ t \ n \ x0b \ r \ n]的缩写

您可以查看http://www.vogella.de/articles/JavaRegularExpressions/article.html了解详情。

答案 5 :(得分:0)

使用Java 8 Stream ,它成为一个衬板。下面的代码基于点.分割整个字符串,然后删除所有前面的零0

// "10.013.00400.0.1.001.100" ---> [10, 13, 400, 0, 1, 1, 100]
String in = "10.013.00400.0.1.001.100"; 
List<String> list = Arrays.stream(in.split("\\."))
                          .map(s -> s.replaceAll("^0+(?!$)", ""))
                          .collect(Collectors.toList());
System.out.println(list);

打印

[10, 13, 400, 0, 1, 1, 100]