我有一个字符串,其值为-7.000,10.000,0.000,-212.000
现在我想从字符串中拿走.000,如果有的话,还要在前面拿走。我的价值观必须始终是积极的。
所以从这个例子来看,我必须给我7,10,0,212。我怎么能这样做?
我可以做StringHandling.LEFT(myvalue,1).equals(" - ")?StringHandling.LEFT(myvalue,2):StringHandling.LEFT(myvalue,1)但是我有问题是,当我的值为10.000时,它会给我1个
答案 0 :(得分:4)
为什么不直接将字符串解析为数字,然后应用'绝对'运算符?
String foo = "-50.000";
double bar = Double.parseDouble(foo);
int result = (int) abs(bar);
String yourResult = String.valueOf(result);
OP评论后编辑:
要逃避负数,您可以在此代码之前加一点:
foo.replaceAll("-", "");
如果你只想让'378.890'成为'378',那就更简单了:
String foo = "378.890";
String[] bar = foo.split(".");
String result = bar[0];
如果你需要'0378.890'成为'378':
String foo = "378.890";
String[] bar= foo.split(".");
String foobar = bar[0];
int result = Integer.parseInt(foobar);
result = abs(result); // If necessary (depends if you want to handle it at the string level or not)
String finalResult = String.valueOf(result);
答案 1 :(得分:1)
使用简单的String.substring()
电话:
String s = "-50.000";
String out = s.substring(s.charAt(0) == '-' ? 1 : 0, s.indexOf('.'));
如果输入s
以减号-
开头,它将被切断,并且也会在小数点处切断,因此不会有尾随零。
这是最有效的,因为它只执行所需输出所需的内容。没有不必要的转换和对象创建。
答案 2 :(得分:1)
您可以使用replaceAll()
或replaceFirst()
和regex,如下所示:
\.[0-9]+
示例:强>
String test = "-700.999";
test = test.replaceFirst("-", "").replaceFirst("\\.[0-9]+", "");
System.out.println(test);
<强>输出:强>
700
您可以测试此示例和其他示例here。
<强>解释强>
replaceFirst("-", "")
将删除-
的首次出现(因为替换为空值)。
replaceFirst("\\.[0-9]+", "")
将删除dot
的首次出现,后跟任意位数。如果该号码有可能是700.
,并且您想要删除.
,那么您可以在此正则表达式中将+
替换为*
。 *
表示0
或更多,而+
表示1
更多。
更多信息
你也可以缩短这个解决方案,它需要一个replaceAll()
调用一个更复杂的正则表达式。
答案 3 :(得分:0)
尝试使用regEx:
String yuStr = "-7.000, 10.000, 0.000, -212.000";
System.out.println(yuStr.replaceAll("-|(\\d+)\\.\\d+", "$1"));
输出:
7, 10, 0, 212
答案 4 :(得分:0)
在我看来,不是字符串问题,而是数字问题。将其解析为双精度然后处理其绝对值会将您带到您想要的位置:
Math.abs(Double.valueOf(val).intValue())
答案 5 :(得分:0)
试试这个:
char[] splitChars = {',',' '};
string samplestring = "-7.000, 10.000, 0.000, -212.000 ";
string[] array = (samplestring.Split(splitChars, StringSplitOptions.RemoveEmptyEntries));
char[] splitChars1 = {'.','0'};
for(int i =0; i < array.Length; i++)
{
array[i] = array[i].TrimStart('-').Replace(".000", "");
}
或者,如果它确定你将永远得到.000,那么在最后那么简单的方式可以是:
char[] splitChars = {',',' '};
string samplestring = "-7.000, 10.000, 0.000, -212.000 ";
string output = samplestring.Replace("-", "");
output = output.Replace(".000", "");
答案 6 :(得分:0)
这可以通过简单的数学来完成:
String foo = "-1.99"; // example
double original = Double.parseDouble(foo);
double parsed = Math.floor(Math.abs(original)); // remove '-' if there is one, then round down