看一看jsp中定义一个字符串处理的方法:
复制代码代码如下:
<%!
String splitString(String str, int a) {
if (str != null &&str.trim().length() >0 &&a >0) {
// 取得该字符串的字节长度
int length = str.getBytes().length
// 全部不包括汉字
if (str.length() == length) {
// 如果截取长度是字符串长度以内,就substring,否则就取这个字符串
if (a <str.length()) {
return str.substring(0, a)
} else {
return str
}
} // 含有汉字
else {
StringBuffer sb = new StringBuffer()
// 截取算法 遍历字符串,并且监测a值
for (int i = 0i <str.length() &&a >0i++) {
// 如果是汉字算2个长度。
if (str.charAt(i) >= '\u4e00' &&str.charAt(i) <= '\u9fa5') {
// 如果是汉字且不是最后一个字符,就加上,否则不加
if (a >1) {
sb.append(str.charAt(i))
a -= 2
}
// 不是汉字只算一个长度
} else {
sb.append(str.charAt(i))
a--
}
}
return sb.toString()
}
}
return "输入有误"
}
%>
该方法的功能是,传入一个字符串和长度,返回截取后的字符串,长度会按照汉字两个、字母数字一个的方式来统计,如果最后一个是汉字,那么这个汉字就放弃掉,绝不能出现半个汉字的情况。
jsp中定义方法,需要注意以下几点:
1,需要使用<%! %>这样的标签包起来,这是jsp中定义变量或者方法的标志。
2,如果在方法中需要使用内置对象out时,一定要在方法的参数列表中传过来,并且要让方法跑出一个IO异常。
3,方法的范围就不要定义了,反正就是内部使用,直接使用缺省范围的就可以了。
这是实例化对象,固定的语句。Object不可以自定义。
var a = {}a.xxx = 123
var a = {}这样写也是对象。
与new Object()是一样的。而且使用{}实例化的效率比new Object的要快。
使用示例:下面的示例代码将调用上面NativeOcClass的方法,在js层只需要这样调用:varret=jsb.reflection.callStaticMethod("NativeOcClass","callNativeUIWithTitle:andContent:","cocos2d-js","Yes!youcallaNativeUIfromReflection")这里是这个方法在OC的实现,可以看到是弹出一个native的对话框。并把title和content设置成传入的参数,并返回一个boolean类型的返回值。+(BOOL)callNativeUIWithTitle:(NSString*)titleandContent:(NSString*)content{UIAlertView*alertView=[[UIAlertViewalloc]initWithTitle:titlemessage:contentdelegate:selfcancelButtonTitle:@"Cancel"otherButtonTitles:@"OK",nil][alertViewshow]returntrue}此时,就可以在ret中接受到从OC传回的返回值(true)了。注意:在OC的实现中,如果方法的参数需要使用float、int、bool的,请使用如下类型进行转换:float,int请使用NSNumber类型bool请使用BOOL类型。例如下面代码,传入2个浮点数,然后计算他们的合并返回,使用NSNumber而不是int、float去作为参数类型。+(float)addTwoNumber:(NSNumber*)num1and:(NSNumber*)num2{floatresult=[num1floatValue]+[num2floatValue]returnresult}