【问题标题】:Splitting a string at a certain character in java在java中的某个字符处拆分字符串
【发布时间】:2017-10-13 14:53:45
【问题描述】:

在这段代码中,我试图在一个确定的位置拆分一个字符串,但它不起作用,我不知道该放什么,因为我知道我正在尝试将它的格式设置为“xy " 没有空格,逗号,任何东西。

import java.util.*;

  public class xy {

    public static void main(String[] args) {

      System.out.println("Enter a number with the format 'xy'. x is the row number and y the column number.");
      Scanner scanner = new Scanner(System.in);
      String[] xy = scanner.nextLine().split(charAt(1)); // not sure what to put here so I tried charAt but it doesn't work
      String x = xy [0];
      String y = xy [1];
    }
}

【问题讨论】:

  • String.substring() 获取子字符串,或String.charAt() 获取单个字符。请注意,它们都不返回数组,而只返回一个字符串/字符。
  • 你能再补充一点吗?你期待什么样的输入?每次都会是相同类型的输入吗?用户输入的 'xy' 前后是否会有特定字符?
  • 请解释"doesn't work"

标签: java arrays string split


【解决方案1】:

在这段代码中,我试图在一个确定的位置拆分一个字符串,但它不起作用,我不知道该放什么,因为我知道我正在尝试将它的格式设置为“xy " 没有空格,逗号,任何东西

您不必使用拆分,收到的输入中没有分隔符。因为预期的输入是xy。将其作为字符串接收并使用 charAt:

String input = scn.nextLine();
char x = input.charAt(0);
char y = input.charAt(1);

或者

String x = input.substring(0, 1);
String y = input.substring(1);

【讨论】:

    【解决方案2】:

    在这种情况下,您不需要拆分。你基本上知道第一个字符串应该从索引 0 到 n-1,然后你得到第二个字符串从 n-1 到 "length"。

    因此:不要分裂;只需拨打substring() 两次,然后提供所需的号码。

    当你首先处理两个chards;走吧:

    char x = str.charAt(0);
    char y = str.charAt(1);
    

    完成。

    【讨论】:

    • 这是个好主意,但是如果行或列大于9怎么办?
    • @Sentinel 在这种情况下,OP 需要更改接受的格式。否则我们无法知道 123 是指 12 3 还是 1 23。但是这个问题是关于 xy 格式的。
    • @Sentinel 那么预期的输入不应该是xy,因为没有办法确定哪个数字属于x和y。
    • @Sentinel “你”如何拆分像 113 这样的值?那是 11/3 还是 1/13 ......在这个意义上:用户必须澄清他的要求!
    • @GhostCat 我同意!只是想确保它被注意到
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-21
    • 1970-01-01
    • 2014-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多