小技巧两则——RFT方法和纯JAVA
问题场景1:在使用RFT工具时,遇到一个比较特殊的情况,即:某个文本框限定了输入的字符类型(如只接受数字),而这个限定不是限定在键盘的输入上,它能让你输入任意字符,只是输入一个字符后它会马上判断是不是可接受的类型,如果不是,则会清空。那么同样的,这种控件还有一个特点,那就是:如果现在这个文本框中已经有一个数字了,我们从它的上一个控件使用tab键,此时光标在待输入的文本框中,我们会发现光标自动跑到原有数字的后面了,这时如果在代码中使用xxx.setText("String")方法来输入值的话将会出现问题。例如,原来在文本框中输入了数字10,现在回放脚本时,我们要让它输入20,那么回放时会发现,这个文本框的值变成了1020了,显然不是我们想要的。
解决方法:
设置文本框的值除了可以使用xxx.setText("String you want to input")外,其实RFT还提供了很多类似的方法,其中,xxx.setProperty(".value","String you want to input")就能起到做用,这个方法直接将文本框的.value属性的值设置为我们输入的值,能达到我们的要求!OK,搞定~~
问题场景2:
由于特殊需要,今天在取一个字符串时,需要找出该字符串中某子字符串出现的次数,例如A字符串为what is this?my name is what!,现在需要找出A字符串中包含有多少个is。我不知道java类库中有没有提供很方便的方法哈~但是问了一下开发人员,他们没有说有简便的方法,没办法,只好自己胡乱整吧。
解决思路:
既然取一个字符串A中出现子字符串B的次数,那么就先获取A字符串的长度(如上面例子中a.length()=29)。然后把需要查找的子字符串B替换成空,(即现在字符串成了whatth?my namewhat!),然后再获取这个字符串的长度(length()=23),OK,两个长度相减,得出29-23=6,再除以要查找的子字符串的长度(is的长度为2),那么6/2=3,即is在A字符串中出现的次数为3。呵呵,很土的方法。不过能实现就OK了,管它土不土呢,嘿嘿~
/**
* @parameter orginStr原始字符
* @parameter subStr 要查询的子字符
* @return 返回子字符在原始字符串中出现的次数
**/
private int countOfString(String originStr, String subStr)
{
int count = 0;
int orginLength = originStr.length(); //原始字符串的长度
String temp = null;
if(subStr != null && subStr != "" && !subStr.equals(""))
{
temp = orginStr.replace("subStr",""); //将原始字符串中的子字符替换为空
}
int afterReplaceLength = temp.length(); //替换为空后字符串的长度
count = (orginLength - afterReplaceLength)/subStr.length() ; //两者之间的差除以子字符的长度得出出现的次数
return count; //返回次数
} 不错,收藏。 后面那个可以用正则吧
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegTest {
static void test() {
Pattern p = null;
Matcher m = null;
int a = 0;
p = Pattern.compile("is");
m = p.matcher("what is this?my name is what!");
// b = m.matches();
while (m.find()) {
a++;
}
System.out.println("is 出现了"+a+"次");
}
public static void main(String args[]) {
test();
}
}
页:
[1]