我有以下內容:如何在Java中將字符串轉換爲字符和整數?
- 字符串包含5 *;
- char opr;
- int data;
我想在數據中的5 *存儲在OPR
任何想法,該怎麼辦呢? 我所知,如果字符串包含整數僅然後我將分裂和解析,但在這種情況下,字符串包含int和炭
輸入:
字符串輸入= 5 *;
我想輸出將是這樣的:
this.opr = *
this.data = 5
我有以下內容:如何在Java中將字符串轉換爲字符和整數?
我想在數據中的5 *存儲在OPR
任何想法,該怎麼辦呢? 我所知,如果字符串包含整數僅然後我將分裂和解析,但在這種情況下,字符串包含int和炭
輸入:
字符串輸入= 5 *;
我想輸出將是這樣的:
this.opr = *
this.data = 5
一個簡單的方法來做到這一點(如果你不希望使用正則表達式)是做這樣的事情:
String temp ="";
// read every char in the input String
for(char c: input.toCharArray()){
// if it's a digit
if(Character.isDigit(c)){
temp +=c; // append it
}
else{ // at the end parse the temp String
data = Integer.parseInt(temp);
opr = c;
break;
}
}
//test
System.out.println("Input: " + input
+ "\t Data: " + data
+ "\t Opr: " + opr);
測試
Input: 5* Data: 5 Opr: *
Input: 123* Data: 123 Opr: *
根據可疑的假設問題的形式解析String
數字後跟op,這段代碼將達到預期的結果。
public static void main(String[] args)
{
final String input = "5*";
int data = -1;
String op = "";
Pattern pat = Pattern.compile("([\\d]+)[\\s]*(.*)");
Matcher m = pat.matcher(input);
if (m.matches() && m.groupCount() == 2) {
data = Integer.parseInt(m.group(1));
op = m.group(2).trim();
}
System.out.printf("%2d with op %s%n", data, op);
}
輸出:
5 OP *
String input = 5*;
char[] splitted = input.toCharArray();
char opr = splitted[1];
int data = Character.getNumericValue(splitted[0]);
代碼只有答案在SO中。也許給你的代碼解釋? –
,你還可以有3級不同的輸入試試這個如下。它將打印0不正確的數據和空白不正確的操作。
String input = "5*";
//String input = "109/";
//String input = "109b3*";
int data = 0;
char opr = ' ';
int len = input.length();
if ( len > 1) {
String data_s = input.substring(0, len - 1);
try {
data = Integer.valueOf(data_s).intValue();
} catch(Exception e) {
}
opr = input.substring(len - 1). charAt(0);
if ( opr != '+' && opr != '-' && opr != '*' && opr != '/') {
opr = ' ';
}
}
System.out.println("Input:" + input + " Data:" + data + " Opr:" + opr);
這個問題*非常具體*。你應該定義你想要的完整用例。沿着'([\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')(。*)')的正則表達式可以讓你在Matcher組中訪問數字和操作數,但是如果有其他要求, 。 – KevinO
一種方法是使用'char opr = str.charAt(1);''int data = Integer.parseInt(str.substring(0,1));'。但是有些東西告訴我這可能太具體。如果您需要更通用的解決方案,則需要描述更一般的示例。 – Pshemo
@Pshemo沒有特定的代碼,我試圖找出如何做到這一點,你的答案是完美的:)感謝很多「dzięki」 –