[英]How to Sort Numeric Array in JMeter Beanshell
我不熟悉在JMeter腳本中使用Beanshell / Java。 我的JMeter Beanshell處理器中有以下代碼。
int count = Integer.parseInt(vars.get("student_id_RegEx_matchNr"));
String delimiter = ",";
StringBuffer sb = new StringBuffer();
for(int i=1;i<=25;i++) {
sb.append(vars.get("student_id_RegEx_" + i));
if (i == count){
break; //to eliminate comma after the array
}else {
sb.append(delimiter);
}
}
vars.putObject("myUnsortedVar",sb.toString());
運行腳本時得到以下輸出:
myUnsortedVar=5,6,2,3,1,4
我希望這樣對它進行數字排序,然后將其存儲在名為“ sortedVar”的新變量中。
1,2,3,4,5,6
我可以使用什么代碼對它進行排序,並存儲在新變量中,以便可以在即將到來的JMeter請求中使用排序后的數組。 感謝幫助。
以sb.toString() = "5,6,2,3,1,4"
。
String::split()
從String
轉換為String[]
。 Arrays::sort()
對數組進行排序 Arrays.toString()
從String[]
轉換為String
String[] sortedArray = Arrays.sort(sb.toString().split(","));
vars.putObject("mySortedVar", Arrays.toString(sortedArray));
我想在bean shell中您可以使用與Java中相同的東西。 填充StringBuffer后,就沒有簡單的方法對內容進行排序。 因此,我將內容首先存儲到中間的ArrayList<String>
(如果總是得到數字,甚至存儲在更好的ArrayList<Integer>
),然后使用Collections.sort
對其進行排序,然后使用另一個for
循環將列表的內容放入StringBuffer使用逗號分隔符。
您可以執行以下操作:
char [] responseCharArray = vars.get("myUnsortedVar").toCharArray();
Arrays.sort(responseCharArray);
String mySortedString = Arrays.toString(responseCharArray);
vars.put("mySortedVar", mySortedString.replaceAll("\\,\\,","").replaceAll(" ",""));
有關JMeter中 Beanshell腳本的更多信息,請參見如何使用BeanShell:JMeter最喜歡的內置組件指南。
正如OndreJM所建議的那樣,您需要更改方法。 而不是將值存儲在StringBuffer中,而是將它們存儲在ArrayList中,然后使用Collections.sort
進行排序。 以下代碼將為您工作。
// create an ArrayList
ArrayList strList = new ArrayList();
for (int i=0;i<25; i++){
strList.add(vars.get("student_id_RegEx_" + String.valueOf(i+1)));
}
// sort this ArrayList
Collections.sort(strList);
// use StringBuilder to build String from ArrayList
StringBuilder builder = new StringBuilder();
for (String id: strList){
builder.append(id);
builder.append(",");
}
builder.deleteCharAt(builder.length()-1);
// finally put in variable using JMeter built in 'vars.put'
// do not use vars.putObject, as you can not send object as request parameter
vars.put("sortedVar", builder.toString());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.