(java)如何在零件上拆分一个数字,然后将它们相互比较

Posted

技术标签:

【中文标题】(java)如何在零件上拆分一个数字,然后将它们相互比较【英文标题】:(java) how to split a number on parts and then compare them to each other 【发布时间】:2013-02-03 21:07:31 【问题描述】:

我想知道如何在零件上拆分一个数字,然后将它们相互比较

例如,我有一组数字

 989010
 990009
 991008
 992992
 993006
 994005
 995004

我想把每个数字分成两部分 -->>

if it's 989010 -- it will be like '989' and '010'. 

在那之后,我想我可以比较两个字符串,对吧?

我的意思是,

   '989' != '010'  true
   '990' != '009'  true 
   '992' != '992'  false

看来我应该使用拆分功能,但是我很困惑如何仅在两个部分而不是更多部分上分开

提前致谢!

【问题讨论】:

在您的情况下,一个简单的substring() 就可以完成这项工作。如需比较,请查看How do I compare strings in Java 所有数字都是 6 位数字还是可能会有所不同? @giorashc 是的,他们这样做了 @Leo 你能告诉我们你尝试了什么吗? 不,我不能。我在编写程序的另一部分时遇到了这个问题 【参考方案1】:
String str = "989010";

System.out.println(str.substring(0, 3).equals(str.substring(3,6)));

【讨论】:

【参考方案2】:

您可以通过多种方式做到这一点。

String.substring 会给你两个字符串,或者你可以将数字相除

int number = 123456;
int firstPart = number / 1000;
int secondPart = number - firstPart * 1000;

编辑 很抱歉 - 很匆忙。 为了弥补这一点,我将再次证明任何值得解决的问题都可以用regex(通常令人费解)的语言来解决:

    final String[] strings = new String[]"123123", "123456";
    final Pattern pattern = Pattern.compile("([\\d]3)\\1");
    for (final String string : strings) 
        final Matcher matcher = pattern.matcher(string);
        if (matcher.matches()) 
            System.out.println(string + " matches.");
        
    

输出:

run:
123123 matches.
BUILD SUCCESSFUL (total time: 0 seconds)

它甚至需要0 seconds,哈哈。

【讨论】:

在发布之前运行您的代码并查看输出。这只能像这样工作:int secondPart = number - firstPart * 1000; 123456/1000 == 123 != 123456-123 == 123333 @MarounMaroun:没有其他人有这种方法,所以我为 bmorris591 修复了它【参考方案3】:
    Long number = 989010L;
    String text = number.toString();
    String firstPart = text.substring(0,3);
    String secondPart = text.substring(3);

    Long firstNumber = Long.parseLong(firstPart);
    Long secondNumber = Long.parseLong(secondPart);

    System.out.println(firstNumber == secondNumber);

【讨论】:

【参考方案4】:

看看这个

public static void main(String[] args) 

        String[] values =  "989010", "990009", "991008", "992992", "993006", "994005", "995004" ;

        for(String value : values) 
            String firstPart = value.substring(0, 3);
            String secondPart = value.substring(3);
            if(firstPart.equals(secondPart)) 
                System.out.println(firstPart + " equals " + secondPart);
            
        
    

【讨论】:

【参考方案5】:
`String s = "931492";
 int first = Integer.parseInt(s.substring(0, s.length()/2));
 int second = Integer.parseInt(s.substring(s.length()/2));
 if (first != second)
 
    System.out.println("Not equal");
 `

编辑:是的,我正在比较错误的子字符串,对此感到抱歉。此外,在比较 Java 中的字符串时,您应该使用 equals()。我更新了我的代码以生成两个整数。可能提供额外的比较功能。

【讨论】:

==!= 用于String - 比较参考而不是内容本身。它们将始终为 Not equal,除非它们在 String pool 中指向相同的 String

以上是关于(java)如何在零件上拆分一个数字,然后将它们相互比较的主要内容,如果未能解决你的问题,请参考以下文章

如何拆分文件并并行处理它们然后将它们缝合回去? Unix

请问“solidworks 如何将装配体变成单个零件”

linux shell脚本:拆分字符串,将它们放在一个数组中然后循环它们[重复]

solidworks零件改名后无法识别工程图,打不开

将时间数据 CSV 拆分为不同的年份并将它们绘制在一个图表中

将 txt 文件合并为一个文件,然后再次拆分它们