如何在Java中读取此字符串?

如何在Java中读取此字符串?,java,regex,Java,Regex,我有这样一个字符串:“xxxxxxx,yyyyyyy-zzzz” 有时它碰巧是“xxxxxxx-zzzz” x的长度可能会有所不同。 我想要的,永远是x字。 有没有一个简单的方法可以做到这一点 我的想法是: 迭代字符串,将我读到的每个字符追加到stringbuilder,直到我读到一个“,”,然后中断迭代,我得到这个单词,但这看起来很混乱 因此,也许有一种更简单的方法可以做到这一点。以下是获取第一个字符的几种方法: String str = "x , y - zzzzzz"; System.ou

我有这样一个字符串:“xxxxxxx,yyyyyyy-zzzz” 有时它碰巧是“xxxxxxx-zzzz” x的长度可能会有所不同。 我想要的,永远是x字。 有没有一个简单的方法可以做到这一点

我的想法是: 迭代字符串,将我读到的每个字符追加到stringbuilder,直到我读到一个“,”,然后中断迭代,我得到这个单词,但这看起来很混乱


因此,也许有一种更简单的方法可以做到这一点。

以下是获取第一个字符的几种方法:

String str = "x , y - zzzzzz";
System.out.println(str.charAt(0));
System.out.println(str.substring(0, 1));
System.out.println(str.replaceAll("^(.).*", "$1"));

选择一个你更喜欢的:)

更新

要查找第一个单词,可以使用以下正则表达式模式:

String pattern = "[\\s\\p{P}]+";
\s
代表空格,
\p{p}
代表标点符号

您可以使用
split
,如中所示

String str = "xxxxxxx , yyyyyyy - zzzzzz";
System.out.println(str.split(pattern)[0]);
str = "xxxxxxx - zzzzzz";
System.out.println(str.split(pattern)[0]);
str = "xxxxxxx, zzzzzz";
System.out.println(str.split(pattern)[0]);
str = "xxxxxxx-zzzzzz";
System.out.println(str.split(pattern)[0]);
所有将输出
xxxxxxx
。但是,如果需要将标点限制在较小的子集,可以在
&&[^-]
否定减法中排除标点:

[\\s\\p{P}&&[^-]]+
或者只定义您自己的范围:

[\\s.,;:]+

你为什么不使用
string[0]
你可以使用
string.charAt(0)
charAt(0)
怎么样?是的,有几种简单的方法。我很抱歉,真的很抱歉。但是x不是一个单独的字符。我知道这是我的错,这就是为什么我要编辑这篇原创文章。但是非常感谢你的解决方案,我希望你能找到一个解决我“真正的”问题的答案。我想现在我会听到“是的,但是……”)我很抱歉,真的很抱歉。但是x不是一个单独的字符。我知道这是我的错,这就是为什么我要编辑这篇原创文章。但非常感谢你的解决方案,我希望你能找到一个我的“真实”问题,请检查我的更新。我希望这对解决你的问题有足够的帮助。非常感谢你,请原谅我之前写得不好。