回答
String arr = "[1,2]";
String[] items = arr.replaceAll("\\[", "").replaceAll("\\]", "").replaceAll("\\s", "").split(",");
int[] results = new int[items.length];
for (int i = 0; i < items.length; i++) {
try {
results[i] = Integer.parseInt(items[i]);
} catch (NumberFormatException nfe) {
//NOTE: write something here if you need to recover from formatting errors
};
}
final String[] strings = {"1", "2"};
final int[] ints = new int[strings.length];
for (int i=0; i < strings.length; i++) {
ints[i] = Integer.parseInt(strings[i]);
}
這是一個很好的簡潔的實現方法。儘管如此,我當然非常失望,Java顯然沒有想到它的一個庫中有單行版本。 –
它看起來像JSON - 這可能是矯枉過正,視情況而定,但你可以考慮使用JSON庫(如http://json.org/java/)來分析它:
String arr = "[1,2]";
JSONArray jsonArray = (JSONArray) new JSONObject(new JSONTokener("{data:"+arr+"}")).get("data");
int[] outArr = new int[jsonArray.length()];
for(int i=0; i<jsonArray.length(); i++) {
outArr[i] = jsonArray.getInt(i);
}
使用Java 8的流庫,我們可以做這一個班輪(儘管是長線):
String str = "[1, 2, 3, 4, 5, 6, 7, 8, 9, 0]";
int[] arr = Arrays.stream(str.substring(1, str.length()-1).split(","))
.map(String::trim).mapToInt(Integer::parseInt).toArray();
System.out.println(Arrays.toString(arr));
substring
去掉括號,split
陣列分離元素,trim
刪除數字周圍的任何空格,parseInt
解析每個數字,然後將結果轉儲到數組中。我已經包含了trim
以使其與Arrays.toString(int[])
相反,但是它也會解析沒有空白的字符串,如問題中所示。如果您只需要解析來自Arrays.toString
的字符串,則可以省略trim
並使用split(", ")
(注意空格)。
聰明。雖然看起來像代碼高爾夫! – voidHead
感謝您將此添加爲答案 –
在緊密循環或移動設備中,通過短暫的String
對象生成大量垃圾並不是一個好主意,尤其是在解析長數組時。
我的答案中的方法解析數據而不生成垃圾,但它不會正常處理無效數據,也無法解析負數。 如果您的數據來自不可信來源,您應該進行一些額外的驗證或使用其他答案中提供的替代方法之一。
public static void readToArray(String line, int[] resultArray) {
int index = 0;
int number = 0;
for (int i = 0, n = line.length(); i < n; i++) {
char c = line.charAt(i);
if (c == ',') {
resultArray[index] = number;
index++;
number = 0;
}
else if (Character.isDigit(c)) {
int digit = Character.getNumericValue(c);
number = number * 10 + digit;
}
}
if (index < resultArray.length) {
resultArray[index] = number;
}
}
public static int[] toArray(String line) {
int[] result = new int[countOccurrences(line, ',') + 1];
readToArray(line, result);
return result;
}
public static int countOccurrences(String haystack, char needle) {
int count = 0;
for (int i=0; i < haystack.length(); i++) {
if (haystack.charAt(i) == needle) {
count++;
}
}
return count;
}
countOccurrences implementation was shamelessly stolen from John Skeet
您可以通過使用在java.util包中定義StringTokenizer類很容易做到這一點。
void main()
{
int i=0;
int n[]=new int[2];//for integer array of numbers
String st="[1,2]";
StringTokenizer stk=new StringTokenizer(st,"[,]"); //"[,]" is the delimeter
String s[]=new String[2];//for String array of numbers
while(stk.hasMoreTokens())
{
s[i]=stk.nextToken();
n[i]=Integer.parseInt(s[i]);//Converting into Integer
i++;
}
for(i=0;i<2;i++)
System.out.println("number["+i+"]="+n[i]);
}
輸出:-number [0] = 1 數[1] = 2
索爾的答案,可以更好地實現分束字符串是這樣的:
string = string.replaceAll("[\\p{Z}\\s]+", "");
String[] array = string.substring(1, string.length() - 1).split(",");
- 1. 轉換int數組爲字符串JAVA
- 2. 轉換numpy的字符串數組轉換成int數組
- 3. 將int數組轉換爲java中的字符串數組
- 4. 轉換字符串轉換成int()
- 5. 轉換一個int到個人數字組成的字符串在java中
- 6. 將字符串數組轉換成int數組
- 7. 將字符串轉換爲Java中的int數組
- 8. 轉換JSON字符串數組格式轉換成Java中
- 9. 將字符串轉換爲int數組
- 10. 字符串到int數組轉換c#
- 11. 將int轉換爲字符串數組
- 12. 將字符串轉換爲int數組
- 13. 轉換字符串數組爲int
- 14. 如何在Java中將int數組轉換爲base64字符串?
- 15. 使用數組在Java中將字符串轉換爲Int
- 16. 的JavaScript字符串轉換成INT
- 17. 字符串的PHP數組轉換成int
- 18. 轉換字符串數組在Java中
- 19. 轉換INT數組字符串數組中numpy的不截斷
- 20. 字符串轉換成Java
- 21. 如何int數組轉換爲字符串數組中的java的安卓
- 22. 將數組的字符串表示形式轉換回java中的int數組
- 23. 將字符串轉換爲int,int轉換爲字符串
- 24. 將(Int,字符串)轉換爲字符串以打印數組
- 25. 轉換數組字符串字符串和背面中的Java
- 26. 將字符串轉換爲java中的數組字符串
- 27. 將字符串轉換爲Java中的字符串數組
- 28. 轉換INT字符轉換成int不需要在Java
- 29. 轉換的java字符串轉換成JavaScript字符串
- 30. 解析字符串數組轉換成int矩陣
發佈有效的Java實例。 –
這是一個家庭作業問題嗎? –
您的示例代碼不能編譯。請修復它。也就是說,看看StringTokenizers:http://download.oracle.com/javase/6/docs/api/java/util/StringTokenizer.html –