gpt4 book ai didi

java - 在 Java 中将字符串中括号内的值作为整数返回

转载 作者:行者123 更新时间:2023-12-01 22:25:41 25 4
gpt4 key购买 nike

我从 cobol copybook 中提取了格式信息,需要使用 switch 或 if 语句来获取 ( ) 中的值。所有值都在一个字符串数组中,我正在使用下面的示例值迭代数组。

X(37)
9(03)
X(15)
9(07)
X
X(1)
X(253)

我的开关盒

private int convertSize(String pic) {
switch (pic) {
case "X" :
return 1;
case "X("+ "string inside" +")" :
return Integer.parseInt("string inside");
case "9("+ "string inside" +")" :
return (Integer.parseInt("string inside")+1);
default:
return 0;
}

我应该用“string inside”替换什么才能得到结果?“\d+”不起作用,因为它在数组中保存为字符串。

最佳答案

给你。完全单元测试...

package com.example;

import org.junit.Assert;
import org.junit.Test;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Question28819604 {

@Test
public void test() {
Assert.assertEquals(37,convertSize("X(37)"));
Assert.assertEquals(4,convertSize("9(03)"));
Assert.assertEquals(15,convertSize("X(15)"));
Assert.assertEquals(8,convertSize("9(07)"));
Assert.assertEquals(1,convertSize("X"));
Assert.assertEquals(1,convertSize("X(1)"));
Assert.assertEquals(253,convertSize("X(253)"));
Assert.assertEquals(0,convertSize("non-match"));
Assert.assertEquals(0,convertSize(null));
Assert.assertEquals(0,convertSize("X(broken)"));
Assert.assertEquals(0,convertSize("X(broken"));
}

private Pattern xPattern = Pattern.compile("X\\((\\d+)\\)");
private Pattern ninePattern = Pattern.compile("9\\((\\d+)\\)");

private int convertSize(String pic) {
if (pic == null) {
return 0;
}

Matcher xPatternMatcher = xPattern.matcher(pic);
Matcher ninePatternMatcher = ninePattern.matcher(pic);

if ("X".equals(pic)) {
return 1;
} else if (xPatternMatcher.matches()) {
return Integer.parseInt(xPatternMatcher.group(1));
} else if (ninePatternMatcher.matches()) {
return Integer.parseInt(ninePatternMatcher.group(1)) + 1;
} else {
return 0;
}
}
}

关于java - 在 Java 中将字符串中括号内的值作为整数返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28819604/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com