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

Java:如何在空格后将字符串拆分为两个独立的数组?[副本]

丁均
2023-03-14

如果客户端想要将消息存储到txt文件中,用户使用关键字msgstore后跟引号。

示例msgstore“ABC就像123一样简单”

我试图将msgstore和quote拆分为数组中两个独立的元素。

我目前拥有的是:

String [] splitAdd = userInput.split(" ", 7);

但我面临的问题是,它在第二个空格后再次分裂,因此它是:

splitAdd[0] = msgstore
splitAdd[1] = "ABC
splitAdd[2] = is

我的问题是,如何将后半部分组合成具有未知长度元素的单个数组,以便:

splitAdd[0] = msgstore
splitAdd[1] = "ABC is as easy as 123"

我是java新手,但我知道在python中使用(7::)之类的东西很容易做到。

有什么建议吗?

共有3个答案

宿建本
2023-03-14

您可以使用RegExp:Demo

Pattern pattern = Pattern.compile("(?<quote>[^\"]*)\"(?<message>[^\"]+)\"");
Matcher matcher = pattern.matcher("msgstore \"ABC is as easy as 123\"");

if(matcher.matches()) {
    String quote = matcher.group("quote").trim();
    String message = matcher.group("message").trim();
    String[] arr = {quote, message};

    System.out.println(Arrays.toString(arr));
}

这比字符串的子字符串可读性更强,但速度肯定较慢。或者,您可以使用substring字符串:

String str = "msgstore \"ABC is as easy as 123\"";
int pos = str.indexOf('\"');
String quote = str.substring(0, pos).trim();
String message = str.substring(pos + 1, str.lastIndexOf('\"')).trim();
String[] arr = { quote, message };
System.out.println(Arrays.toString(arr));
丁阳炎
2023-03-14

第一个索引上的子字符串

String str = "msgstore \"ABC is as easy as 123\"";

int ind = str.indexOf(" \"");

System.out.println(str.substring(0, ind));
System.out.println(str.substring(ind));

编辑

如果这些值需要在一个数组中,那么

String[] arr = { str.substring(0, ind), str.substring(ind)};
韶镜
2023-03-14

当您只需要2个元素时,为什么将限制参数设置为7?尝试将其更改为2:-

String splitAdd[] = s.split(" ", 2);

String splitAdd[] = new String[]{"msgstore", s.split("^msgstore ")[1]};
 类似资料:
  • 问题内容: 假设我有一个字符串 我想通过空格分隔符将其拆分为字符串数组。我还想保留值之间的单个空格,而忽略多个空格。 做这个的正则表达式是什么? 问题答案: 首先摆脱多个空格: 然后使用split方法将字符串拆分为数组

  • 问题内容: 欲分割为4的阵列,以利用 这是我的代码: 但是,结果标记是一个空数组:[],而不是 我想要的4数组。 我已经测试过更改一点: 这次的结果标记为。这与我想要的接近,但是我真的不想在拆分之前添加此“ 1”。 问题基本上是,如果它仅包含空元素,它将返回一个空数组。 您能帮助解决问题吗? 问题答案: 您需要使用带有limit参数的重载方法。 从文档(重点是我的): limit参数控制应用图案的

  • 问题内容: 我需要将一个String拆分为单个字符String的数组。 例如,拆分“ cat”将得到数组“ c”,“ a”,“ t” 问题答案: 这将产生

  • 给我一个字符串“23 45”,我需要得到两个值为23的变量(int a)和值为45的变量(int b)

  • 问题内容: 我有这串 如何将此字符串拆分为每个子字符串包含2个字符的子字符串?我很困惑,因为我找不到分隔符来分隔它们。 问题答案:

  • 问题内容: 我试图在网上四处寻找将字符串拆分为字符数组的答案,但似乎找不到一个简单的方法 似乎不像Ruby那样工作。有没有一种简单的方法可以不循环? 问题答案: