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

我需要一些简单的帮助,在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?

    • 我需要一些帮助用JSOUP解析这个html。我正在尝试从表中的每一列获取数据值。我一直在看JSoup文档,试图弄清楚我到底需要做什么,但还是不确定。看起来网站使用了CSS和内联格式的组合;其中大部分可以转换为CSS并减小页面大小。 这是html文件的一个小片段(实际上差不多有5 MB大小)。 更新:我已经更新了源代码,以更准确地显示html的结构。我假定tbody将位于表元素中是一个给定的条件。我