发布
社区首页 >问答首页 >也可以拆分java的字符串方法,返回带有分隔符的数组

也可以拆分java的字符串方法,返回带有分隔符的数组
EN

Stack Overflow用户
提问于 2012-12-26 01:58:20
回答 3查看 1.4K关注 0票数 1

当我们在java中对字符串使用String.Split()方法进行拆分时,它的工作方式如下:

代码语言:javascript
代码运行次数:0
复制
String s = "hello my dear";
String[] ss = s.split("[ ]");

数组ss包含[Hello, my, dear],但本例中的空格(即分隔符)不是数组的一部分。

有没有可能分隔符是使用Java中string类的split方法生成的数组的一部分。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-12-26 02:01:41

你可以这样做:

代码语言:javascript
代码运行次数:0
复制
"hello my dear".split("(?<=[ ])");

它在一个空字符串上拆分,紧跟在一个空格之后。这将为您提供具有如下元素的数组:

代码语言:javascript
代码运行次数:0
复制
hello_
my_
dear

_的意思是空间。

如果你希望你的分隔符是单独的数组元素,你可以这样做:-

代码语言:javascript
代码运行次数:0
复制
System.out.println(Arrays.toString("a+b=c".split("(?<=[+=])|(?=[+=])")));

现在,它在空字符串上拆分,空字符串后面要么是+ or =,要么是前面的+ or =。因此,在上述情况下执行分割的所有位置如下所示:-

代码语言:javascript
代码运行次数:0
复制
a + b = c
 ^ ^ ^ ^    <-- Empty strings before and after your pattern - `[+=]`

因此,您的数组中有5个元素。

输出:-

代码语言:javascript
代码运行次数:0
复制
[a, +, b, =, c]

但是你使用了错误的工具来解析数学表达式。您不应该为此使用正则表达式。

票数 4
EN

Stack Overflow用户

发布于 2012-12-26 02:00:56

使用StringTokenizer's重载构造函数:

代码语言:javascript
代码运行次数:0
复制
String s = "hello my dear";
StringTokenizer st = new StringTokenizer(s, " ", true);
while(st.hasMoreTokens()){
    System.out.println(st.nextToken());
}

输出:

代码语言:javascript
代码运行次数:0
复制
hello

my

dear
票数 2
EN

Stack Overflow用户

发布于 2012-12-26 02:11:51

您可以在单词边界上拆分。

代码语言:javascript
代码运行次数:0
复制
    String[] ts = "hello my dear".split("\\b");
    System.out.println(Arrays.toString(ts));

[, hello,  , my,  , dear]

代码语言:javascript
代码运行次数:0
复制
public String[] getParts(String s) {
    List<String> parts = new ArrayList<String>();
    Pattern pattern = Pattern.compile("(\\w+|\\W)");
    Matcher m = pattern.matcher(s);
    while (m.find()) {
        parts.add(m.group());
    }
    return parts.toArray(new String[parts.size()]);
}

这与每次查找单词\\w+ (小写W)或非单词字符\\W (大写w)匹配。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14032850

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档