我是一名Java开发人员,但我需要一个代码从PHP转换为Java。我需要一个函数,它在 Java 中给出与 PHP 函数 substr 等效的结果(因为 Java 不采用负值,而 php 采用)。
例如:
$string = "I am not lonely man";
$sub = $substr($string,1,-3);
编辑:正确答案:-
public String substr(String string,int from,int to){
if(from < 0 && to < 0){
if(Math.abs(from) > Math.abs(to)){
String s = string.substring(string.length()-Math.abs(from));
return s.substring(s.length()-Math.abs(to));
}else{
return "";
}
}else if(from >= 0 && to < 0){
String s = string.substring(from);
if(Math.abs(to) >= s.length()){
return "";
}else{
return s.substring(0,s.length()-Math.abs(to));
}
}else if(from < 0 && to >= 0){
String s = string.substring(string.length()-Math.abs(from));
if(to >= s.length()){
return s;
}
return s.substring(0,to);
}else{
String s = string.substring(Math.abs(from));
if(to >= s.length()){
return s;
}else{
return s.substring(0, Math.abs(to));
}
}
}
输出:不寂寞
自己计算这个相对容易,但是如果你想用方便的方法来处理这类事情,请考虑使用Apache StringUtils。
我想你自己给出了答案:Java不知道负索引......所以你必须自己计算它们。因此,您可以提供自己的子字符串实用程序方法来允许负索引;您只需要根据传入字符串的长度进行数学运算。
你可以
这样写:
String string = "I am not lonely man";
String sub = string.substring(1, string.length() - 3);