Java:如何在空格后将字符串拆分为两个单独的数组?

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


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


我正在尝试将 msgstore 和引号拆分为数组中的两个单独元素。


我目前拥有的是:


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::) 之类的东西很容易做到。


有什么建议吗?


蓝山帝景
浏览 247回答 3
3回答

慕妹3146593

当你只需要 2 个元素时,为什么你有limit参数7?尝试将其更改为2:-String splitAdd[] = s.split(" ", 2);或者String splitAdd[] = new String[]{"msgstore", s.split("^msgstore ")[1]};

幕布斯7119047

第一个 indexOf 上的子字符串 "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)};

MMMHUHU

您可以使用正则表达式:演示Pattern pattern = Pattern.compile("(?<quote>[^\"]*)\"(?<message>[^\"]+)\"");Matcher matcher = pattern.matcher("msgstore \"ABC is as easy as 123\"");if(matcher.matches()) {&nbsp; &nbsp; String quote = matcher.group("quote").trim();&nbsp; &nbsp; String message = matcher.group("message").trim();&nbsp; &nbsp; String[] arr = {quote, message};&nbsp; &nbsp; System.out.println(Arrays.toString(arr));}这比 substring 一个字符串更具可读性,但它显然更慢。作为替代方案,您可以使用 substirng 字符串: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));
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java