【问题标题】:How can I read this string in Java? [closed]如何在 Java 中读取此字符串? [关闭]
【发布时间】:2015-06-25 14:47:08
【问题描述】:

我有一个这样的字符串:“xxxxxxx , yyyyyyy - zzzzzz” 有时它恰好是“xxxxxxx - zzzzzz” x 的长度可能会有所不同。 我想要得到的,总是x字。 有没有简单的方法可以做到这一点?

我的想法是: 遍历字符串,将读取的每个字符附加到字符串生成器,直到读取“,”,然后中断迭代并得到单词,但这看起来很混乱。

所以也许有更简单的方法来做到这一点。

【问题讨论】:

  • 你为什么不用string[0]
  • 你可以使用String.charAt(0)
  • charAt(0) 怎么样?
  • 是的,有几种简单的方法可以做到这一点。
  • 对不起,真的很抱歉。但是 x 不是单个字符。我知道这是我的错,这就是我编辑原帖的原因。但是非常感谢您的解决方案,我希望您能找到我的“真正”问题

标签: java regex


【解决方案1】:

这里有几种获取第一个字符的方法:

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

IDEONE demo

选择你更喜欢的一个:)

更新

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

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.,;:]+

只要another demo

【讨论】:

  • 我想现在我会听到“是的,但是……”:)
  • 对不起,真的很抱歉。但是 x 不是单个字符。我知道这是我的错,这就是我编辑原帖的原因。但是非常感谢您的解决方案,我希望您能找到我的“真正”问题
  • 请检查我的更新。我希望它对解决您遇到的问题有所帮助。
  • 非常感谢,并原谅我之前的问题写得不好。
猜你喜欢
  • 2016-04-03
  • 1970-01-01
  • 2022-01-23
  • 1970-01-01
  • 2021-05-13
  • 2018-09-04
  • 1970-01-01
  • 2021-05-24
  • 1970-01-01
相关资源
最近更新 更多