Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从字符串中减去字符串_Java_String - Fatal编程技术网

Java 从字符串中减去字符串

Java 从字符串中减去字符串,java,string,Java,String,我有一个字符串1.2秒或者说0.4秒我想做的很简单,只需从字符串末尾删除sec。我只想在一行中完成它。我知道其他的方法,转换为字符数组搜索空间和删除,然后所有这些,但我想知道这是否可以像“1.2秒”-“秒”,或者像时间-“秒”或者类似的方法,但只需要一两行。如果没有,我知道怎么做。但如果有,怎么办 更新: 如果我执行此代码: String time = stopwatch1.getjLabel4text(); String replace = time.replace(" sec",""); S

我有一个字符串
1.2秒
或者说
0.4秒
我想做的很简单,只需从字符串末尾删除
sec
。我只想在一行中完成它。我知道其他的方法,转换为字符数组搜索空间和删除,然后所有这些,但我想知道这是否可以像
“1.2秒”-“秒”
,或者像
时间-“秒”
或者类似的方法,但只需要一两行。如果没有,我知道怎么做。但如果有,怎么办

更新:

如果我执行此代码:

String time = stopwatch1.getjLabel4text();
String replace = time.replace(" sec","");
System.out.println(replace+"");
System.out.println(time+"");
我得到输出:

2.0 Sec
2.0 Sec
使用子字符串:

str.substring(0, str.length() - " sec".length());


假设字符串存储在
s
中,您可以使用
s.replaceAll(“秒”),将其删除。

您可以这样做

    String str = "1.2 sec";
    String requiredString = str.substring(0,str.indexOf('s')).trim();


按照@Blekit的建议使用
子字符串

添加此答案是为了说明应使用
String.replace
而不是
String.replaceAll
,因为replaceAll使用regex/Pattern类,在这种情况下不需要


String result=str.replace(“Sec”和“)

您可以删除所有不需要的内容:

s.replaceAll("[^0-9\\.]*", "")

使用StringTokenizer怎么样

new StringTokenizer("0.2 Sec").nextToken();

它将返回“0.2”

String result=String.replaceAll(“sec”和“)
可以完成这项工作……是的,我知道的唯一方法就是使用字符串操作方法,正如人们所展示的那样。
-
操作符没有像我不相信的那样实现。
替换
不区分大小写-如果我看得没错,你需要将
time.replace(“sec”)
更改为
time.replace(“sec”)
@Blekit是的:D谢谢你,我认为这可能是最好/最优雅的解决方案。向上投票。indexOf('s')和trim()只是让它变得不必要的冗长。公正指数(“sec”);当然可以?用户可以输入
1.2秒
。用户错误,但我们的代码必须处理思想。然后最好编写
str.substring(0,str.indexOf(“”)
-您不必调用
trim()
用户可能使用“Foosball 1.2秒”,那么您也错了。给出问题的答案,而不是一些假设。那么这会仅仅改变str的内容吗?或者生成名为substring的新字符串?Java中的字符串是不可变的-方法substring生成新字符串。您不能更改原始String对象的值。我的意思是,在String类的实例上调用方法
substring
(或者实际上调用String类的任何方法),您将生成一个具有新值的新实例。这甚至会生成一个新字符串吗?这确实有效。你能告诉我为什么这个
字符串不替换=time.replace(“秒”)工作?您的示例使用的是
“秒”
,而不是
“秒”
String.replace()
是区分大小写的方法。问题是您有一个大写的
'S'
。尝试将该方法更改为
s.replaceAll(“秒”)
str.replaceAll(" sec", "");
s.replaceAll("[^0-9\\.]*", "")
new StringTokenizer("0.2 Sec").nextToken();