1

我有一个字符串变量。字符串的例子是这样的:

abc
12345 cde123
hyz 
8755 3356

我想通过拆分空格来分配一个数组字符串,就像这样。我只想取它的前 4 个值。

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

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

但是,abcand12345由换行符而不是空格分隔。所以我尝试用我的函数替换换行符变成空格,就像这样:

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得到了。=)

4

6 回答 6

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]
于 2012-03-05T09:20:50.483 回答
1

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

String[] stringArray  = stringX.split("\\s");
于 2012-03-05T09:22:30.827 回答
1

使用替换

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

使用正则表达式

您还可以使用一些正则表达式模式之王来查找单词。就像是:

\S+

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

于 2012-03-05T09:23:01.013 回答
0

使用以下代码:

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

\s表示:一个空白字符,是 [ \t\n\x0b\r\f] 的缩写

您可以查看http://www.vogella.de/articles/JavaRegularExpressions/article.html了解更多信息。

于 2012-03-05T09:27:35.283 回答
0

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

String[] words = text.split("\\s+");
于 2012-03-05T09:25:58.420 回答
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]
于 2019-09-12T05:04:40.463 回答