3

我试图想出一个循环,它将通过一个弹簧,一旦它到达 % 字符,它将把 % 之后的所有内容传递给 hexToInt 函数。这就是我想出的。

for(int x=0; x<temp.length(); x++)
    {
        if(temp.charAt(x)=='%')
        {
            newtemp = everthing after '%'
            hexToInt(newtemp);
        }
    }
4

5 回答 5

7

试试这个:

newtemp = temp.substring(x+1);

'%'此外,您应该在找到字符后中断。事实上,整个代码片段可以这样实现(无需为它编写循环!):

String newtemp = temp.substring(temp.indexOf('%')+1);
于 2013-08-25T19:52:52.650 回答
1

您可以从 '%' 的第一个索引到末尾获取原始字符串的子字符串并完成相同的操作:

int index = temp.indexOf('%') + 1;
String substring = temp.substring(index, temp.length());

如果您需要在 '%' 字符的最后一个实例之后将字符串断开到字符串的末尾(假设字符串中有多个 '%' 字符),您可以使用以下命令:

int index = temp.lastIndexOf('%') + 1;
String substring = temp.substring(index, temp.length());
于 2013-08-25T19:55:08.763 回答
0

尝试查看 String.split() 方法。

String str1 = "Some%String";

public String getString(){
    String temp[] = str1.split("%");
    return temp[1];
}

这种方法不需要循环。

于 2013-08-25T19:54:09.787 回答
0

使用“包含”进行比较和 substring() 方法

if(temp.contains('%')){
int index = temp.indexOf('%') + 1;
String substring = temp.substring(index, temp.length());
}
于 2013-08-25T19:54:17.120 回答
0

使用正则表达式而不是逐个字符地迭代字符串会更容易解析。类似的东西(.*)%([0-9a-fA-F]+)也可以验证十六进制令牌。

public static void main(String[] args) {
    String toParse = "xxx%ff";

    Matcher m = Pattern.compile("(.*)\\%([0-9a-fA-F]+)").matcher(toParse);

    if(m.matches()) {
        System.out.println("Matched 1=" + m.group(1) + ", 2=" + Integer.parseInt(m.group(2), 16));
    }
}
于 2013-08-25T20:02:19.550 回答