2016-03-28 64 views
0

標題不言而喻。我正在嘗試創建一個計算器,它使用基本編碼集成了多項式函數,而不僅僅是掏出一個數學運算符來爲我做這件事:)。我沒有辦法走遠,直到我碰到牆壁,因爲我無法找到一種方法:在原始字符串中創建數字的子字符串,直到達到非數字字符。即如果字符串是123x,我想創建一個123的子字符串,沒有'x'。以下是我到目前爲止有:Java - 如何創建一個子字符串,直到達到非數字字符?

public static void indefinite() 
{ 
    int x = 0; 
    System.out.print("Enter your function to integrate:\n F "); 
    Scanner input = new Scanner(System.in); 
    String function = input.nextLine(); 
    String s1 = ""; 
    for (int i = 0; i < function.length(); i++) 
    { 
     s1 = s1 + function.substring(x, i+1); 
     x = i+1; 
    } 
} 

這一切看起來有點無厘頭,但基本上,如果字符串「功能」爲32X^4,我想子是32.我會想出剩下的就是我自己,但這部分我似乎無法做到。

p.s.我知道for循環的重複變量是錯誤的,它不應該重複,直到字符串的結尾,如果我正在查看不只是2x^3的函數。我還沒有試圖弄清楚這一點,所以我只是確保它完成了一部分。

回答

2

你可以在信中位數標記分割你的字符串,像這樣:

str.split("(?<=\\D)(?=\\d)|(?<=\\d)(?=\\D)"); 

例如, 「123x54y7z」 將返回[123, x, 54, y, 7, z]

1

使用replaceAll()爲 「提取物」 是:

String number = str.replaceAll("\\D.*", ""); 

這將替換第一個非數字及其後的所有內容(沒有任何內容)(有效刪除它),只留下數字。

您也可以直接到數字原始,而不必如果你願意(和我一樣)使用String變量有更少的代碼:

int number = Integer.parseInt(str.replaceAll("\\D.*", "")); 
相關問題