【问题标题】:how to split from second space found?如何从找到的第二个空间中拆分?
【发布时间】:2016-11-09 18:58:01
【问题描述】:

好吧,这就是我在现实生活中所拥有的:

array = inputText.split("\n");

        for (String each : array) {

            listOfArray.add(each.split(" "));

        }

说明:我在 xhtml 页面上有一个输入文本框。此框将包含几行。每一行都是这样的:

Name1 Surname1 Age1 Sex1 
Name2 Surname2 Age2 Sex2
Name3 Surname3 Age3 Sex3

然后我创建一个数组,其字段将包含每一行。 然后我想创建一个数组列表,其字段将包含第一个数组的每个字段。但我希望“Name1 Surname1”是一个单数字段。

【问题讨论】:

  • 再次连接你的array[0] + " " +array[1]
  • @ZakariaeMAHLA 这只是一个简单的例子。我想要一个适合这种一般情况的实现。然而,命令 split 将为我做阵列。我不创建任何数组。
  • 我认为我的解决方案适合每个用例:)。给我一个反例
  • 你已经编辑了你的评论,什么命令?能详细点吗?
  • @ZakariaeMAHLA 有没有办法使用命令 split(String,index) 来完成这项工作?

标签: java split


【解决方案1】:

如果您正在为这种不希望在第一个空格上拆分的特定情况寻找解决方案,那么您可以使用:

String line = "Name1 Surname1 Age1 Sex1";
String[] arr = line.split("(?<=\\s\\S{1,100})\\s");

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

输出:[Name1 Surname1, Age1, Sex1]

split("(?&lt;=\\s\\S{1,100})\\s") 分割前面有空格和 1-100 个非空白字符的空格。因此,由于第一个空格之前没有任何空格,因此在拆分过程中将被跳过。
我还使用了{1,100} 而不是+,因为在Java 中后视需要有明显的最大长度,所以我们不能在那里使用+(至少理论上是因为存在允许它的错误:https://stackoverflow.com/a/16486373/1393766) .

【讨论】:

  • 我想这就是他搜索的内容。
  • 这个代码行似乎适合我..我已经通过了。我要实现它,看看它是否有效。
  • 虽然它在“?”上给了我一个错误这是'悬在索引“0”附近'
  • @Marco 看起来你试图像split("?") 一样拆分。 ? 是代表{0,1} 量词的正则表达式元字符,但如果没有它应该描述的元素,如ax? 可以匹配aax,该量词就没有意义。如果你想关闭它的特殊含义,用\ 转义它(在字符串文字中你还需要转义它,所以你需要像split("\\?") 这样写)。
【解决方案2】:

比@creativecreator 更通用的解决方案是:

String[] array = start.split(" ");
String[] finalArray = Arrays.copyOfRange(array, 1, array.length);
finalArray[0] = array[0] + " " + finalArray[0];

即避免必须明确地完成所有任务。

【讨论】:

    【解决方案3】:
    String str = "Jon Snow 26 NightsWatch"
    String[] values = str.split(" ");
    String[] finalValues = new String[3];
    for(int j=0; j<values.length; j++)
        if(j == 2)
        {
            index++;
            finalValues[index] = values[j];
            index++;
        }
        else
        {
            finalValues[index] += values[j] + " ";
        }
    

    附: :此代码仅向 OP 展示如何进行。错误未修复,留给读者修复。

    【讨论】:

    • 这和我说的基本一样,我觉得@AndyTurner的版本可能更好
    猜你喜欢
    • 2018-03-13
    • 2021-09-26
    • 1970-01-01
    • 2021-11-25
    • 2021-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多