$str = "This is liguoliang dot com"; echo "全部变小写 strtolower: ".strtolower($str); echo "
第一个字母大写 ucfirst: ".ucfirst($str); echo "
单词首字母大写 ucwords: ".ucwords($str); echo "
全部变大写 strtoupper: ".strtoupper($str); // 5.3 以后, 支持lcfirst($str); //第一个字母小写
输出:
全部变小写 strtolower: this is liguoliang dot com
第一个字母大写 ucfirst: This is liguoliang dot com
单词首字母大写 ucwords: This Is Liguoliang Dot Com
全部变大写 strtoupper: THIS IS LIGUOLIANG DOT COM
public String[] split(String regex)
根据给定正则表达式的匹配拆分此字符串。
该方法的作用就像是使用给定的表达式和限制参数 0 来调用两参数 split 方法。因此,所得数组中不包括结尾空字符串。
例如,字符串 "boo:and:foo" 使用这些表达式可生成以下结果:
Regex 结果
: { "boo", "and", "foo" }
o { "b", "", ":and:f" }
参数:
regex – 定界正则表达式
返回:
字符串数组,它是根据给定正则表达式的匹配拆分此字符串确定的
抛出:
PatternSyntaxException – 如果正则表达式的语法无效
从以下版本开始:
1.4
注意: 使用转义字符.
如:
String str = "192.168.1.1"; String[] strs = str.split("\\."); for (String string : strs) { System.out.println(string); }
输出:
192
168
1
1
var str:String = "192.168.1.1"; var strsArray = str.split("\.");//str.split("."); for each(var s:String in strsArray) { trace(s); } for(var s:String in strsArray) { trace("for in " + strsArray); }
输出信息:
for-each-in 192
for-each-in 168
for-each-in 1
for-each-in 1
for in 0
for in 1
for in 2
for in 3
另外, 在AS中, for in 和for each in 的区别:
for-each-in 类似于Java5.0之后的for-in, 如上所使用
在AS中for-in的循环迭代于变量名中, 如上AS代码中的for-in输出的是Array的index[下标], 如果要打印value, 则应使用 在trace中使用strsArray[s].
String
String对象是不可改变的.
String s1 = “s”;
改语句声明了一个指向对象的引用, 名为s1, 目前指向一个String对象, 其内容为”s”;
String s2 = “s”;
上一句则声明一个指向”s” 的引用 – 目前Sun的JVM会对此过程进行优化, 会将s2指向s1所指向的对象. 而非创建新的对象.
String s3 = s2;
声明了一个引用, 改引用指向s2所指向的String对象.
String s4 = new String(“s”);
声明一个引用s4, 同事通过String类创建String对象, s4指向该对象.
通过new String()函数创建String, 每次都会创建一个String对象,相比使用直接数, 效率低.
== 与 equals
首先需要明确:
在Java中, “==” 用于判断两个对象是否相同 – 可以理解为引用了相同的内存地址
而equals()则是Object类中的一个方法, 在 具体的类中有着具体的实现.
在String中, equals被冲写为:
public boolean equals(Object anObject) { if (this == anObject) { return true; } if (anObject instanceof String) { String anotherString = (String)anObject; int n = count; if (n == anotherString.count) { char v1[] = value; char v2[] = anotherString.value; int i = offset; int j = anotherString.offset; while (n-- != 0) { if (v1[i++] != v2[j++]) return false; } return true; } } return false; }
可见, 如果两个String”==” – 即相同, 则equals直接返回true. 如果不同 则先比较长度 , 再逐字比较. 一般来说, 在重写equals时也应重写hashCode.
在String中:
使用直接数赋值时, 具有优化作用的JVM会先搜索是否已经存在内容相同的Stinig对象, 如果存在, 则返回一个引用, 如果不存在则先创建,再返回引用.因此如果使用new String()进行操作, 则将丧失JVM优化的作用.
因此,
String s1 = “s”;
String s2 = “s”;
是相同的.
而使用String s1 = new(“s1”); 时, 将会创建一个新的String对象, 因此
String s1 = “s”
String s2 = new String(“s”);
是不同的, 但是相等的.
因此有:
String s1 = "s"; String s2 = new String("s"); String s3 = "s"; String s4 = new String(s1); System.out.println("s1 == s2 - " + (s1 == s2)); System.out.println("s1.equals(s2)) - " + s1.equals(s2)); System.out.println("s1 == s3 - " + (s1 == s3)); System.out.println("s1.equals(s3) - " + s1.equals(s3)); System.out.println("s4 == s1 - " + (s4 == s1)); System.out.println("s4 == s2 - " + (s4 == s2));
输出信息如下:
s1 == s2 – false
s1.equals(s2)) – true
s1 == s3 – true
s1.equals(s3) – true
s4 == s1 – false
s4 == s2 – false
另外:
String s1 = “s1”;
String s2 = s1;
s1 = “ss”;
执行完之后 , s2 内容为”s1″, s1的内容为”ss”;
表明第二行代码中, s2 引用了 s1指向的String地址, 此后s2与s1再无关系.
// Proudly powered by Apache, PHP, MySQL, WordPress, Bootstrap, etc,.