如何在java中剪切字符串的特定部分?

时间:2018-04-06 10:55:05

标签: java string cut

我正面临着如何剪切字符串特定部分的问题:

     - VIN                : A9 C1 C4 C5 C6 E9 F2 F5 F8 G1 G7 H4 H6 I1 I4 I5
                            I6 I7 J1 K8 L3 L5 M4 O2 P6 Q9 R3 S3 T9 U3 V2 V3
                            V9 W5 Z5
     - CODES              : A9 C1 C4 C5 C6 E9 F2 F5 F8 G1 G7 H4 H6 I1 I4 I5
                            I6 I7 J1 K8 L3 L5 M4 O2 P6 Q9 R3 S3 T9 U3 V2 V3
                            V9 W5 Y4 Y8
  1. 我想将部分从A9切割到Z5并将其放入字符串列表(来自VIN部分)
  2. 单词VIN和CODE总是相同但每个部分的代码可能不同,为什么我只需要取A9和Z5的索引并获取所有内容

3 个答案:

答案 0 :(得分:0)

使用文字“CODES”拆分字符串以获取前半部分,然后使用a regular expression matcher迭代代码:

final String vin = myString.split("CODES")[0];
final List<String> codes = new ArrayList<>();
final Matcher matcher = Pattern.compile("[A-Z][0-9]").matcher(vin);
while (matcher.find()) codes.add(matcher.group());

答案 1 :(得分:0)

尝试(仅当字符串始终遵循相同的模式时):

String vinCode = myString.subString(myString.indexOf(":") + 2); // Blank space
vinCode = vinCode.subString(0, vinCode.indexOf("-"));

正如AxelH注意到的,这相当于

String vinCode = myString.subString(myString.indexOf(":") + 2, vinCode.lastIndexOf("-"));

但我认为这两个步骤更清楚。

答案 2 :(得分:0)

你的sugestions的Thx。问题并不那么容易,因为字符串本身包含许多像“ - Word:something”这样的句子我写这段代码来解决它:

public List<String> getModelOptionCodesList(String calcPreview){
    List<String> modelOptionsList = new ArrayList<>();
    String modelOptionsFromVinPosition = "VIN   : ";
    String modelOptionsPosition = "CODES     : ";
    Integer startIndexOfMOCodes;
    Integer endIndexOfMOCodes;
    String moCodes;

    startIndexOfMOCodes = calcPreview.indexOf(modelOptionsFromVinPosition);
    endIndexOfMOCodes = calcPreview.indexOf(modelOptionsPosition);
    startIndexOfMOCodes += modelOptionsFromVinPosition.length();

    moCodes = calcPreview.substring(startIndexOfMOCodes, endIndexOfMOCodes - 3).replaceAll("\\n\\s+", " ");
    modelOptionsList = Arrays.asList(moCodes.split("\\s"));
    modelOptionsList.removeIf(String::isEmpty);

    return modelOptionsList;
}