如何拆分格式为AB123-> AB 123的字符串?爪哇

时间:2019-04-11 10:59:13

标签: java

我有一个格式为AB123的字符串。我想在AB和123之间进行拆分,以便AB123成为AB123。字符串的内容可以不同,但​​是格式保持不变。有办法吗?

6 个答案:

答案 0 :(得分:8)

紧跟您提供的最新信息(2个字母然后3个数字):

myString.subString(0, 2) + " " + myString.subString(2)

这是什么:您将输入字符串myString分割为第二个字符,并在此位置添加一个空格。

答案 1 :(得分:4)

说明:\ D表示非数字,\ d表示正则表达式中的数字,我在正则表达式中使用了三元运算将宪章拆分为数字。

  String string = "AB123";
  String[] split = string.split("(?<=\\D)(?=\\d)");
  System.out.println(split[0]+" "+split[1]);

答案 2 :(得分:1)

尝试

Method Dummy()
{
    RestAssured.baseURI ="http://mydummyURL";
    RequestSpecification request = RestAssured.given();
    JSONObject requestParams = new JSONObject();
    requestParams.put("id", "THAILAND"); //Issue is with this code 
    request.header("Content-Type", "application/json");
    request.body(requestParams.toJSONString());
    Response response = request.post("/EndPoint");
}

希望这会有所帮助

答案 3 :(得分:1)

尽管我会亲自使用@RakeshMothukur's answer中提供的方法,因为稍后当字母或数字的计数增加/减少时它也可以使用,因此我想提供一种额外的方法来在两个字母之间插入空格,并且三位数:

String str = "AB123";
StringBuilder sb = new StringBuilder(str);
sb.insert(2, " "); // Insert a space at 0-based index 2; a.k.a. after the first 2 characters
String result = sb.toString(); // Convert the StringBuilder back to a String

Try it online.

答案 4 :(得分:1)

您在这里。我用很简单的方式写了它,以使事情变得清楚。

它的作用是:接受用户输入后,它将字符串转换为Char数组,并检查单个字符是否为INT或非INT。 在每次迭代中,它都会将数据类型与上一个字符进行比较,并进行相应打印。

替代解决方案

1)使用ASCII范围(难度=简单)

2)重写方法并一次检查2个变量。 (难度=中级)

import org.omg.CORBA.INTERNAL;

import java.io.InputStreamReader;
import java.util.*;
import java.io.BufferedReader;


public class Main {

    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        char[] s = br.readLine().toCharArray();
        int prevflag, flag = 0;
        for (int i = 0; i < s.length; i++) {
            int a = Character.getNumericValue(s[i]);
            String b = String.valueOf(s[i]);
            prevflag = flag;
            flag = checktype(a, b);
            if ((prevflag == flag) || (i == 0))
                System.out.print(s[i]);
            else
                System.out.print(" " + s[i]);
        }
    }

    public static int checktype(int x, String y) {
        int flag = 0;
        if (String.valueOf(x).equals(y))
            flag = 1; // INT
        else
            flag = 2; // non INT
        return flag;

    }
}

答案 5 :(得分:0)

我在等待编译结束之前才开始工作,所以把一个稍微过度设计的示例与基本错误检查和测试放在一起。

import java.text.ParseException;
import java.util.LinkedList;

public class Main {

    static public class ParsedData {
        public final String prefix;
        public final Integer number;

        public ParsedData(String _prefix, Integer _number) {
            prefix = _prefix;
            number = _number;
        }

        @Override
        public String toString() {
            return prefix + "\t" + number.toString();
        }

    }

    static final String TEST_DATA[] = {"AB123", "JX7272", "FX402", "ADF123", "JD3Q2", "QB778"};

    public static void main(String[] args) {
        parseDataArray(TEST_DATA);
    }

    public static ParsedData[] parseDataArray(String[] inputs) {
        LinkedList<ParsedData> results = new LinkedList<ParsedData>();
        for (String s : TEST_DATA) {
            try {
                System.out.println("Parsing: " + s);
                if (s.length() != 5) throw new ParseException("Input Length incorrect: " + s.length(), 0);
                String _prefix = s.substring(0, 2);
                Integer _num = Integer.parseInt(s.substring(2));
                results.add(new ParsedData(_prefix, _num));
            } catch (ParseException | NumberFormatException e) {
                System.out.printf("\"%s\", %s\n", s, e.toString());
            }
        }
        return results.toArray(new ParsedData[results.size()]);
    }
}