gpt4 book ai didi

java - 为什么我的字符串数组长度是 3 而不是 2?

转载 作者:行者123 更新时间:2023-12-02 09:53:06 26 4
gpt4 key购买 nike

我正在尝试理解正则表达式。我想使用 split 创建一个 String[] 来显示给定字符串表达式中有多少个字母?

import java.util.*; 
import java.io.*;

public class Main {

public static String simpleSymbols(String str) {

String result = "";
String[] alpha = str.split("[\\+\\w\\+]");
int alphaLength = alpha.length;
// System.out.print(alphaLength);

String[] charCount = str.split("[a-z]");
int charCountLength = charCount.length;
System.out.println(charCountLength);
}
}

我的输入字符串是“+d+=3=+s+”。我分割字符串来计算字符串中的字母数。数组长度应该是二,但我得到了三。另外,我正在尝试制作一个正则表达式来检查模式 +b+,其中 b 是字母表中的任何字母吗?这是正确的吗?

最佳答案

所以,我突然想到一些事情:

首先,您的正则表达式看起来是正确的。如果您担心正则表达式的执行情况,可以使用 https://regexr.com/检查一下。只需将您的正则表达式放在顶部并在底部输入您的字符串即可查看它是否正确匹配

其次,经过仔细检查,我发现您正在使用 split 函数。虽然快速分割字符串很方便,但您需要小心分割的内容。在这种情况下,您将删除最初查看的所有字符串,这将使其无法找到。如果打印出来,您会注意到以下显示(对于输入字符串 +d+=3=+s+):

+
+=3=+
+

这表明您不小心剪掉了您想​​要查找的内容。现在,有多种方法可以解决此问题,具体取决于您的标准。

现在,如果您想要的只是在所有 + 上进行分离,并且只找到由 + 直接界定的内容并不重要,那么 split 效果很棒。只需执行 str.split("+"),这将返回以下列表(对于 +d+=3=+s+):

d
=3=
s

但是,您可以看到这会带来一些问题。首先,它不会删除我们不想要的 =3=,其次,它并没有真正为我们提供由 +_+ 格式包围的值,其中下划线代表您要的字符串/字符寻找。

当您使用 +w 时,您打算查找被 + 包围的单词。但是,如果您只是想查找一个字符,我建议使用另一个字符,例如 [a-z] 或 [a-zA-Z] 来更具体。但是,如果您想查找多个字母字符,您的模式就可以了。您还可以在模式末尾添加 *(0 个或多个)或 +(1 个或多个)来指示您到底要查找的内容。

我不会直接给你答案,但我会给你一个线索,告诉你该做什么。尝试使用模式和匹配器来查找上面列出的正则表达式,然后如果找到匹配项,请确保将其存储在某个地方:)

此外,为了将来引用,您应该始终以小​​写字母开头函数名称,至少在 Java 中是这样。只有常量和类名应该以大写字母开头:)

关于java - 为什么我的字符串数组长度是 3 而不是 2?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56174497/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com