我正面临着如何剪切字符串特定部分的问题:
- 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
答案 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;
}