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