PHP (首)字母大写操作

Categories: PHP; Tagged with: ; @ September 8th, 2010 20:44

所有字母大写/小写; 单词首字母大写; 第一个字母大写/小写:

$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

参考:  http://php.net/manual/en/function.ucfirst.php

Java/ActionScript – String.split(), 及For in 小结

Categories: Java; Tagged with: ; @ February 15th, 2009 11:36

Java 5.0中:

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

ActionScript中:

			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].

Java String小结

Categories: Java; Tagged with: ; @ February 5th, 2009 0:25

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,.