java中的Split()-ing

发布于 2024-12-11 09:02:43 字数 345 浏览 0 评论 0原文

假设我有:

String string1 = "123,234,345,456,567*nonImportantData";
String[] stringArray = string1.split(", ");

String[] lastPart = stringArray[stringArray.length-1].split("*");
stringArray[stringArray.length-1] = lastPart[0];

有没有更简单的方法可以让这段代码工作?我的目标是分离所有数字,无论 stringArray 是否包含 nonImportantData。我应该使用子字符串方法吗?

So let's say I have:

String string1 = "123,234,345,456,567*nonImportantData";
String[] stringArray = string1.split(", ");

String[] lastPart = stringArray[stringArray.length-1].split("*");
stringArray[stringArray.length-1] = lastPart[0];

Is there any easier way of making this code work? My objective is to get all the numbers separated, whether stringArray includes nonImportantData or not. Should I maybe use the substring method?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

风和你 2024-12-18 09:02:43

实际上,String.split(...) 方法的参数不是分隔符字符串,而是正则表达式。

您可以使用

String[] splitStr = string1.split(",|\\*");

where |是正则表达式 OR,\\ 用于转义 *,因为它是正则表达式中的特殊运算符。您的 split("*") 实际上会抛出 java.util.regex.PatternSyntaxException 。

Actually, the String.split(...) method's argument is not a separator string but a regular expression.

You can use

String[] splitStr = string1.split(",|\\*");

where | is a regexp OR and \\ is used to escape * as it is a special operator in regexp. Your split("*") would actually throw a java.util.regex.PatternSyntaxException.

許願樹丅啲祈禱 2024-12-18 09:02:43

假设您始终拥有您提供的格式......

String input = "123,234,345,456,567*nonImportantData";
String[] numbers = input.split("\\*")[0].split(",");

Assuming you always have the format you've provided....

String input = "123,234,345,456,567*nonImportantData";
String[] numbers = input.split("\\*")[0].split(",");
丢了幸福的猪 2024-12-18 09:02:43

在分割字符串之前我可能会删除不重要的数据。

int idx = string1.indexOf('*');
if (idx >= 0)
  string1 = string1.substring(0, idx);
String[] arr = string1.split(", ");

如果 '*' 始终存在,您可以像这样缩短它:

String[] arr = str.substring(0, str.indexOf('*')).split(", ");

这与 MarianP 的方法,因为“不重要的数据”不会保留为数组的元素。这可能有帮助,也可能没有帮助,具体取决于您的应用程序。

I'd probably remove the unimportant data before splitting the string.

int idx = string1.indexOf('*');
if (idx >= 0)
  string1 = string1.substring(0, idx);
String[] arr = string1.split(", ");

If '*' is always present, you can shorten it like this:

String[] arr = str.substring(0, str.indexOf('*')).split(", ");

This is different than MarianP's approach because the "unimportant data" isn't preserved as an element of the array. This may or may not be helpful, depending on your application.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文