当前位置: 首页 > 面试题库 >

在Java中的空格上拆分字符串,除非双引号之间(即将\“ hello world \”视为一个标记)

韦宣
2023-03-14
问题内容

如何String根据空间拆分a ,但将带引号的子字符串当作一个词?

例:

Location "Welcome  to india" Bangalore Channai "IT city"  Mysore

它应该存储ArrayList为

Location
Welcome to india
Bangalore
Channai
IT city
Mysore

问题答案:

就是这样:

String str = "Location \"Welcome  to india\" Bangalore " +
             "Channai \"IT city\"  Mysore";

List<String> list = new ArrayList<String>();
Matcher m = Pattern.compile("([^\"]\\S*|\".+?\")\\s*").matcher(str);
while (m.find())
    list.add(m.group(1)); // Add .replace("\"", "") to remove surrounding quotes.


System.out.println(list);

输出:

[Location, "Welcome  to india", Bangalore, Channai, "IT city", Mysore]

正则表达式简单地说

  • [^"] -令牌以不同于 "
  • \S* -后跟零个或多个非空格字符
  • ...or...
  • ".+?" - “符号-后跟任何符号,直到另一个符号"


 类似资料:
  • 假设我有一个包含“abc”“xyz”“123”的长字符串,我想把它拆分为[“abc”,“xyz”,“123”]如何?谢谢

  • 我有一根下面这样的弦- value1,value2,value3,value4,“value5,1234”,value6,value7,“value8”,value9,“value10,123.23”

  • 我目前正在尝试将字符串拼接成多行字符串。正则表达式应选择前面有 13 个字符的空格。 问题在于,13个字符的计数在前一个选定的空白之后不会重置。因此,在前13个字符之后,正则表达式选择每个空白。 我使用以下正则表达式,其 13 个字符: (结尾有一个空格) 您可以在这里测试正则表达式和以下代码: 此代码的输出如下所示: 这是个测试。 应用 应在 13 个字符后的空格上以子字符串分隔此字符串 但应该

  • 我想拆分一个字符串基于逗号不包括一个在双引号,也如果有任何相邻的逗号,他们应该被视为单独的令牌 我可以使用正则表达式([^\“]*)\” 但如果有相邻的逗号,它就无法正确地标记。字符串示例 输出应该是 请帮忙

  • 我正在尝试编写一个正则表达式模式,并使用split函数对所有句点进行拆分,除非这些句点位于开括号和闭括号或花括号之间。我想我是对的,因为在一个在线正则表达式测试程序中,当我运行拆分时,它正确地突出显示了我想要拆分的周期,它拆分的不仅仅是周期,还创建了一个长列表。我想我正在做一些明显的事情,但似乎无法理解。请看下面的内容。谢谢 到目前为止我所拥有的: Regex到目前为止: .(? =([^]]([

  • 我有一个字符串。我需要找到外部标点符号并将它们从附加的单词中拆分出来,并将它们视为另一个单词。输出将是: 将是一个单词(内部标点符号) 小狗 将是两个单词, 我的代码根据外部标点符号拆分单词,但我希望它们作为单独的单词。 我该怎么做?