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,我有一个值为-7.000,10.000,0.000,-212.000的字符串 现在,我想从字符串中去掉.000,如果有,还要去掉前面的-。我的价值观总是积极的 从这个例子中,我得到了7,10,0212。我该怎么做 我可以做StringHandling.LEFTmyvalue,1.equals-?StringHandling.LEFTmyvalue,2:StringHandling.LEFTmyvalue,1但我有一个问题,当我的值为10.000时,它只会给我1为什么不把字符串解析为一个数字,然后

我有一个值为-7.000,10.000,0.000,-212.000的字符串

现在,我想从字符串中去掉.000,如果有,还要去掉前面的-。我的价值观总是积极的

从这个例子中,我得到了7,10,0212。我该怎么做


我可以做StringHandling.LEFTmyvalue,1.equals-?StringHandling.LEFTmyvalue,2:StringHandling.LEFTmyvalue,1但我有一个问题,当我的值为10.000时,它只会给我1

为什么不把字符串解析为一个数字,然后应用一个“绝对”操作符呢

String foo = "-50.000";
double bar = Double.parseDouble(foo);
int result = (int) abs(bar);
String yourResult = String.valueOf(result);
评论后编辑:

若要转义负数,可以在该代码前面加一点:

   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);

为什么不将字符串解析为数字,然后应用“绝对”运算符

String foo = "-50.000";
double bar = Double.parseDouble(foo);
int result = (int) abs(bar);
String yourResult = String.valueOf(result);
评论后编辑:

若要转义负数,可以在该代码前面加一点:

   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);
使用简单的String.substring调用:

如果输入s以减号开始,则它将被截断,并且在小数点处也将被截断,这样就不会有尾随的零

这是最有效的,因为它只执行所需输出所需的操作。没有不必要的转换和对象创建。

使用简单的字符串。子字符串调用:

如果输入s以减号开始,则它将被截断,并且在小数点处也将被截断,这样就不会有尾随的零

这是最有效的,因为它只执行所需输出所需的操作。没有不必要的转换和对象创建。

您可以使用replaceAll或replaceFirst,如下所示:

\.[0-9]+
例如:

输出:

您可以测试此示例和其他示例

说明:

replaceFirst-,将删除第一次出现的-with,因为替换为空值。 replaceFirst\\\[0-9]+,将删除第一个出现的点,后跟任意数字。如果有可能,数字可能是700。你想移除这个。同样,您也可以在这个正则表达式中将+替换为*。*表示0个或多个事件,+表示1个或多个事件

进一步资料

您还可以缩短此解决方案,使其需要一个更复杂的regex调用replaceAll。

您可以使用replaceAll或replaceFirst,如下所示:

\.[0-9]+
例如:

输出:

您可以测试此示例和其他示例

说明:

replaceFirst-,将删除第一次出现的-with,因为替换为空值。 replaceFirst\\\[0-9]+,将删除第一个出现的点,后跟任意数字。如果有可能,数字可能是700。你想移除这个。同样,您也可以在这个正则表达式中将+替换为*。*表示0个或多个事件,+表示1个或多个事件

进一步资料

您还可以缩短此解决方案,使其需要一次更复杂的regex的replaceAll调用。

尝试使用regex:

String yuStr =  "-7.000, 10.000, 0.000, -212.000";
System.out.println(yuStr.replaceAll("-|(\\d+)\\.\\d+", "$1"));
输出:

7, 10, 0, 212
尝试使用正则表达式:

String yuStr =  "-7.000, 10.000, 0.000, -212.000";
System.out.println(yuStr.replaceAll("-|(\\d+)\\.\\d+", "$1"));
输出:

7, 10, 0, 212

在我看来,这不是字符串的问题,而是数字的问题。将其解析为double,然后处理其绝对值将带您到您想要的地方:

Math.abs(Double.valueOf(val).intValue())

在我看来,这不是字符串的问题,而是数字的问题。将其解析为double,然后处理其绝对值将带您到您想要的地方:

Math.abs(Double.valueOf(val).intValue())
试试这个:

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", "");
}
试试这个:

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", "");
}

这可以通过简单的数学来实现:

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

这可以通过简单的数学来实现:

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

获取连字符和句点之间的数据?当然,您需要处理连字符或句点不存在的情况。您是说通过Talend Stringhandling例程处理该字符串吗?因为这是一个不同的故事…这是什么字符串处理?获取连字符和句点之间的数据可能吗?当然,您需要处理连字符或句点不存在的情况。您是说通过Talend Stringhandling例程处理该字符串吗?因为这是一个不同的故事…这个字符串处理是什么?他的字符串可能包含像356.7800这样的数字,因为他提到字符串中的大多数数字是367.0000,但不是全部!我们的目标是截断这些数字并显示“356”,还是在这种情况下显示“356.7800”,如果数字是整数则显示不精确?请等待OP的评论以获得进一步澄清!在问题上添加此评论…抱歉之前的错误解释。后面的一切。不适合我。356.7800或356.7800必须是356。我还忘了提到我想把这个值变成一个整数。所以如果它是-345.401或101.00,它必须给我一个345和101的整数,他的字符串可能包含像3这样的数字
56.7800,正如他提到的,字符串中的大多数数字是367.0000,但不是全部!我们的目标是截断这些数字并显示“356”,还是在这种情况下显示“356.7800”,如果数字是整数则显示不精确?请等待OP的评论以获得进一步澄清!在问题上添加此评论…抱歉之前的错误解释。后面的一切。不适合我。356.7800或356.7800必须是356。我还忘了提到我想把这个值变成一个整数。如果它是-345.401或101.00,它必须给我一个345和101的整数