Code Bye

|.NET转Java|在C#中给对像添加扩展方法,那JAVA有没有办法添加

 

在C#中要给字符串添加一个过滤掉HTML内容的扩展方法为

    /// <summary>
    /// 过滤HTML成文件并删除所有HTML标记
    /// </summary>
    /// <param name="source"></param>
    /// <returns></returns>
    public static string FilterHtml(this string source)
    {
        if (source != null && source.Length > 0)
        {
            source = System.Text.RegularExpressions.Regex.Replace(source, "<[^>]*>", "");
            source = source.Replace("&nbsp;", " ");
            source = source.Replace("<br/>", "\r\n");
        }
        return source;
    }

然后对字符就可以用

    public void Test()
    {
        string html="我是<b>组体</b>";
        string result = html.FilterHtml();
        System.Console.Write(result);
        //结果为:我是粗体
    }

上面是C#给字符串添加扩展方法的代码,不知道Java有没有这人功能
如果有,如何来实现?

谢谢


20分
写静态函数吧……这个不过是语法糖而已

40分
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Main {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		String html = "我是<b>粗体</b>";
		String result = FilterHtml(html);
		System.out.println(result);
	}

	// / <summary>
	// / 过滤HTML成文件并删除所有HTML标记
	// / </summary>
	// / <param name="source"></param>
	// / <returns></returns>
	public static String FilterHtml(String source) {
		if (source != null && source.length() > 0) {
			Pattern pattern = Pattern.compile("<[^>]*>");// 用指定的正则表达式进行预编译

			Matcher matcher = pattern.matcher(source);// 创建匹配给定输入与此模式的匹配器。
			StringBuffer sbf = new StringBuffer();
			while (matcher.find()) {// 描输入序列以查找与该模式匹配的下一个子序列。
				// System.out.println(sbf.toString());
				matcher.appendReplacement(sbf, "");//
			}
			matcher.appendTail(sbf);
			source = sbf.toString();

			source = source.replaceAll("&nbsp;", " ");
			source = source.replaceAll("<br/>", "\r\n");
		}
		return source;
	}

}
RE:写静态函数吧……这个不过是语法糖而已
———————————
是这样的在.NET2.0的江翻海搅 写静态函数
但是在3.5的时候就有扩展谅,他的好像有很多
如进行转换
int i=0;
i=Convert.ToInt(Convert.ToFloat(Convert.ToDouble(Convert.ToInt(i))));
这样很不直观,如果有扩展方法的话就为
i=i.ToInt().ToDouble().ToFloat().ToInt();

Java有同有什么方法可以实现这样?
谢谢

我想到一个方法了,
但不知道可行不可行
JAVA不就是开源的吗?
那我可以他的源代码上面把我想要添加的方法加上去
然后再重新编辑出一个我自己的Java?
这样可行不可行啊?
UP……

40分
引用 4 楼  的回复:

我想到一个方法了,
但不知道可行不可行
JAVA不就是开源的吗?
那我可以他的源代码上面把我想要添加的方法加上去
然后再重新编辑出一个我自己的Java?
这样可行不可行啊?

不行,JAVA 类库你最好不要去动,有些类库你改了也跑不起来的。

int i=0;
i=Convert.ToInt(Convert.ToFloat(Convert.ToDouble(Convert.ToInt(i))));
这样很不直观,如果有扩展方法的话就为
i=i.ToInt().ToDouble().ToFloat().ToInt();

这种在 Java 中做不到,Java 实际是并不是纯面向对象的,因为那 8 个基本类型就不是对象。

RE:楼上
也就是我只能写静态方法了?
谢谢
引用 6 楼 bao110908 的回复:

[Quote=引用 4 楼  的回复:]

我想到一个方法了,
但不知道可行不可行
JAVA不就是开源的吗?
那我可以他的源代码上面把我想要添加的方法加上去
然后再重新编辑出一个我自己的Java?
这样可行不可行啊?

不行,JAVA 类库你最好不要去动,有些类库你改了也跑不起来的。

int i=0;
i=Convert.ToInt(Convert.ToFloat(Convert.ToDouble(Convert.ToInt(i))));
这样很不直观,如果有扩展方法的话就为
i=i.ToInt().ToDouble().ToFloat().ToInt();

这种在 Java 中做不到,Java 实际是并不是纯面向对象的,因为那 8 个基本类型就不是对象。

可以,不过运行时系统需要一同打包给用户。。。


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明|.NET转Java|在C#中给对像添加扩展方法,那JAVA有没有办法添加