字符串处理,切出部分字符串

时间:2014-08-29 08:15:23

标签: java string

我有一个字符串,其值为-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个

7 个答案:

答案 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