javaeclipse项目中的子字符串

javaeclipse项目中的子字符串,java,android,eclipse,Java,Android,Eclipse,我对这个很陌生。我正在eclipse中开发一个应用程序来读取读卡器输入。目前,读卡器像往常一样在一行条目中读取所有卡的详细信息(它是一个tract 2读卡器)。它将被更改为track1读卡器,然后我可以使用持卡人姓名文本。这是一个示例卡输出 ;1234567890111213=12345678901113141516? 我想, 每次读卡时删除第一个“;” 将前16位数字(在“;”之后)添加到文本字段 删除“=” 在另一个文本字段中显示“=”符号后的前4位数字 因此,两个文本字段应显示: Tex

我对这个很陌生。我正在eclipse中开发一个应用程序来读取读卡器输入。目前,读卡器像往常一样在一行条目中读取所有卡的详细信息(它是一个tract 2读卡器)。它将被更改为track1读卡器,然后我可以使用持卡人姓名文本。这是一个示例卡输出

;1234567890111213=12345678901113141516?
我想,

  • 每次读卡时删除第一个“;”
  • 将前16位数字(在“;”之后)添加到文本字段
  • 删除“=”
  • 在另一个文本字段中显示“=”符号后的前4位数字
  • 因此,两个文本字段应显示:

    Textfield1:1234567890111213
    Textfield2: 12/34
    
    我尝试在setText行中使用substring()方法,但没有提供任何结果。有人能帮我找出我犯的错误吗

    下面是我正在处理的
    .java
    代码;非常感谢

    package com.square;
    
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.os.Handler;
    import android.os.Message;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.TextView;
    
    public class Payments extends Activity {
        private UpdateBytesHandler updateBytesHandler;
        private UpdateBitsHandler updateBitsHandler;
        private TextView decodedStringView;
        private TextView strippedBinaryView;
        private TextView holderName;
        private TextView expiryDate;
        private TextView cardNumber;
        private Button startBtn;
        private Button stopBtn;
        private MagRead read;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            startBtn = (Button)findViewById(R.id.startbtn);
            stopBtn = (Button)findViewById(R.id.stopbtn);
            stopBtn.setEnabled(false);
            decodedStringView = (TextView)findViewById(R.id.bytes);
            strippedBinaryView = (TextView)findViewById(R.id.bits);
            holderName = (TextView)findViewById(R.id.holderNameReal);
            cardNumber = (TextView)findViewById(R.id.cardNumberReal);
            expiryDate = (TextView)findViewById(R.id.expiry);
    
            read = new MagRead();
            read.addListener(new MagReadListener() {
    
                @Override
                public void updateBytes(String bytes) {
                    Message msg = new Message();
                    msg.obj = bytes;
                    updateBytesHandler.sendMessage(msg);
                }
    
                @Override
                public void updateBits(String bits) {
                    Message msg = new Message();
                    msg.obj = bits;
                    updateBitsHandler.sendMessage(msg);
                }   
    
            });
            MicListener ml = new MicListener();
            startBtn.setOnClickListener(ml);
            stopBtn.setOnClickListener(ml);
            updateBytesHandler = new UpdateBytesHandler();
            updateBitsHandler = new UpdateBitsHandler();
    
        }
    
        @Override
        protected void onDestroy() {
            super.onDestroy();
            read.release();
        }
    
    
    
        /**
         * Listener called with the mic status button is clicked, and when the zero level or noise thresholds are changed
         */
        private class MicListener implements OnClickListener{
    
            /**
             * Called when the mic button is clicked
             * @param
             */
            @Override
            public void onClick(View v) {
                if(v == stopBtn){//stop listening
                    stopBtn.setEnabled(false);
                    startBtn.setEnabled(true);
                    read.stop();
                }else if(v == startBtn) {//start listening
                    stopBtn.setEnabled(true);
                    startBtn.setEnabled(false);
                    read.start();
                }
            }
    
        }
    
    
        private class UpdateBytesHandler extends Handler {
    
            @Override
            public void handleMessage(Message msg) {
                String bytes = (String)msg.obj;
                decodedStringView.setText(bytes);
            }
    
        }
    
        private class UpdateBitsHandler extends Handler {
    
            @Override
            public void handleMessage(Message msg) {
                String bits = (String)msg.obj;
                strippedBinaryView.setText(bits);
            }
    
        }
    
        private class UpdateHolderName extends Handler {
    
            @Override
            public void handleMessage(Message msg) {
                String holderN = (String)msg.obj;
                holderName.setText(holderN);
            }
    
        }
    
        private class UpdateCardNumber extends Handler {
    
            @Override
            public void handleMessage(Message msg) {
                String cardN = (String)msg.obj;
                cardNumber.setText(cardN);
    
            }
    
        }
    
        private class UpdateExpiry extends Handler {
    
            @Override
            public void handleMessage(Message msg) {
                String exp = (String)msg.obj;
                expiryDate.setText(exp);
    
            }
    
        }
    
    
    
    }`
    

    考虑到你的字符串

    String data = ";1234567890111213=12345678901113141516?"
    String first= data.substring(1, 17);
    String second= data.substring(18, data.length()-1);
    

    要了解更多信息,请按此操作检查java字符串方法
    子字符串(i,j)

    重要
    子字符串()
    返回一个新字符串

    返回作为此字符串的子字符串的新字符串


    因此,必须将结果存储在变量中。

    是否尝试调试代码?“使用调试器?”我尝试在setText行中使用substring()方法“不,你没有。在您发布的代码中找不到子字符串。是的,您从未显示您所使用的代码。您使用的是哪种读卡器?是的,我删除了子字符串()项。我用它的时候,;holderName.setText(holderN).substring(1);我试图移除“;”它不起作用。下面是我是如何尝试的;私有类UpdateCardNumber扩展处理程序{Override public void handleMessage(Message msg){String code=(String)decodedStringView.getText();String cardN=code.substring(1,17);}}}}私有类UpdateExpiry扩展处理程序{Override public void handleMessage(Message msg){String code1=(String)decodedStringView.getText();String expiryDate=code1.substring(18,19)+“/”+code1.substring(20,21);}}}?您没有使用
    cardN
    expiryDate
    谢谢,String first的子字符串=code.substring(1,17);有效,但是日期的第二个没有给出正确的日期
    String code = ";1234567890111213=12345678901113141516?";
    String first = code.substring(1,17);
    String second = code.substring(18,19) + "/" + code.substring(20,21);