当前位置: 首页 > 知识库问答 >
问题:

我需要一些简单的帮助,在Java使用。斯普利特

栾昂雄
2023-03-14

我有一个简单的代码:

    public static void main(String[] args) {
        String s = "He is a very very good boy, isn't he?"
        String[] words = s.split("[\\s\\-\\.\\'\\?\\,\\_\\@\\!]");
        System.out.println(words.length);
        for(int i = 0; i<words.length; i++) {
            System.out.println(words[i]);
        }
        scan.close();
    }

应该会给我输出这样的结果:

10
He
is
a
very
very
good
boy
isn
t
he

但相反,它把我印出来了:

11
He
is
a
very
very
good
boy

isn
t
he

谁能建议我如何解决这个问题?我知道问题是当我的程序遇到“”时,它会自动拆分字符串,然后再跟一次“”,它又拆分一次,所以在输出中创建一个空行,但我不知道如何修复它,这样它就会同时拆分多个分隔符。

共有1个答案

石正卿
2023-03-14

首先,虽然在regex中具有特殊含义的字符(如.)通常必须转义,但当它们位于字符类[]中时,则不需要转义。

因此您的split调用相当于:

String[] words = s.split("[\\s\\-.'?,_@!]");

只有-需要转义,因为它在字符类中表示“to”。

基本上,您希望它将“,”视为一个分隔符。若要匹配一个或多个字符,应使用+量词:

String[] words = s.split("[\\s\\-.'?,_@!]+");

这里您说的是分隔符是字符类中的至少一个字符。

下面是一些可视化图,可以查看匹配的字符,请比较:

>

  • 带有+:

    不使用+:

  •  类似资料:
    • 有一个项目将涉及到sftp文件传输到服务器。我已经尝试使用ftp协议,并选择winscp.exe-sftp作为我的程序来录制。有事件被记录,但没有生成后,我完成了记录。 提前谢了。

    • Java 级转换器。如何开始编写此类代码? 我正在为我的Java课程做一个项目,那就是一个等级转换器。我正在寻找一些指针来开始编码这个叫做“等级”的类。我的说明之一是:使用一个名为“等级”的类来存储每个等级的数据。这个类应该包括这三个方法:公共无效setDigital(int号)公共int getDigital()公共String get的()等级类应该有两个构造函数。第一个应该接受任何参数,并将

    • 我对这个很陌生,我有几个问题。我有用keras创建的python神经网络的代码片段。该模型用于情感分析。使用标记数据的训练数据集(情绪=1或0)。现在我有几个关于如何描述神经网络的问题。 我对以下许多条款都不是很清楚,所以不要对我太苛刻。 1:有什么能让这成为情绪分析的典型模型吗? 2:它是“单词袋”吗?(我的猜测是肯定的,因为数据是使用标记器预处理的) 3:是“卷积”吗? 4:深吗? 5:密度大

    • /**程序可以将十进制转换为二进制并报告是否使用了非法字符*程序不能将二进制转换为十进制*/import java.util.scanner; /***这个类包含一个完整的程序,只有一个main()方法,用于*将非负十进制整数(即以10为基数的整数)转换为*正二进制整数(即以2为基数的整数)。要*转换的值是从命令行读入的。*/public class BaseConversions2{public

    • 我想创建我自己的播客应用程序。 我在网上找到了这段预先编写的代码(),并想对其进行调整,以便创建我自己的应用程序。 如何将此代码上载到expo?

    • 问题内容: 我从我的C#网络方法中以这种格式重新获得了JSON: 我现在有一个asp.net下拉列表。好吧,它呈现为带有id 的html下拉列表。 我收到有关AJAX请求的成功警报。如何将这些结果填充到我的#city下拉列表中? 试过这个: 问题答案: 以下是在回调内部应做的事情: 示例: http : //jsfiddle.net/z2D8f/ 或一次附加全部HTML的替代方法,这可能会更快: