给 string 增加一个 GetInputStream 扩展方法

合集下载

Java程序设计实验指导书(答案)

Java程序设计实验指导书(答案)

第Ⅰ部分:实验指导实验1:Java开发环境J2SE一、实验目的(1)学习从网络上下载并安装J2SE开发工具。

(2)学习编写简单的Java Application程序.(3)了解Java源代码、字节码文件,掌握Java程序的编辑、编译和运行过程。

二、实验任务从网络上下载或从CD-ROM直接安装J2SE开发工具,编写简单的Java Application程序,编译并运行这个程序。

三、实验内容1.安装J2SE开发工具Sun公司为所有的java程序员提供了一套免费的java开发和运行环境,取名为Java 2 SDK,可以从上进行下载。

安装的时候可以选择安装到任意的硬盘驱动器上,例如安装到C:\j2sdk1.4.1_03目录下。

教师通过大屏幕演示J2SE的安装过程,以及在Windows98/2000/2003下环境变量的设置方法。

2.安装J2SE源代码编辑工具Edit Plus教师通过大屏幕演示Edit Plus的安装过程,以及在Windows98/2000/2003操作系统环境下编辑Java 原程序的常用命令的用法。

3.编写并编译、运行一个Java Application程序。

创建一个名为HelloWorldApp的java Application程序,在屏幕上简单的显示一句话"老师,你好!"。

public class HelloWorldApp{public static void main(String[] args){System.out.println("老师,你好!");}}4.编译并运行下面的Java Application程序,写出运行结果。

1:public class MyClass {2:private int day;3:private int month;4:private int year;5:public MyClass() {6:day = 1;7:month = 1;8:year = 1900;9:}10:public MyClass(int d,int m,int y) {11:day = d;12:month = m;13:year = y;14:}15:public void display(){16:System.out.println(day + "-" + month + "-" + year);17:}18:public static void main(String args[ ]) {19:MyClass m1 = new MyClass();20:MyClass m2 = new MyClass(25,12,2001);21:m1.display();22:m2.display();23:}24:}运行结果:1-1-190025-12-2001实验2:Java基本数据类型一、实验目的(1)掌握javadoc文档化工具的使用方法。

《Android程序设计》期末总结

《Android程序设计》期末总结

《Android程序设计》期末总结( 版权所有下载不究 - - )第一章:课后习题:1、下列不属于Android平台的技术架构的是:Java虚拟机JVM2、下面 Activity 通常就是一个单独的屏幕3、简述Android的优势:(1)系统的开放性和免费性(2)移动互联网的发展(3)相关厂商的大力支持(4)技术的进一步完善(5)开放收集联盟模式的挑战(6)其他技术的竞争本章重点:1、常见的手机操作系统:Symbian、Android、windows Mobile、IOS、OMS2、Android平台采用了软件栈,由低到高分为四部分:Linux内核层中间层(包括程序库(Libraries)和Android运行时环境)应用程序框架应用层3、一个android应用程序通常由4个组件构成:(1)活动(Activity),是最基本的android应用程序组件(2)意图(Intent),利用消息实现应用程序见的交互机制(3)服务(Service),是android应用程序中具有较长的生命周期但是没有用户界面的程序。

(4)内容提供器(Content Provider),提供了一种多应用间数据共享的方式。

其中活动(Activity)是必要部分。

课后习题:1、Activity生命周期中的(OnCreate())方法用于Activity初次创建时被调用。

2、(暂停)状态下的Activity失去了焦点,但是仍然对用户可见。

3、Activity的可见生命周期是(从调用onStart()方法到onStop()方法的整个过程)4、Android程序不能直接访问的资源存放在(assets目录)下5、简述Activity的生命周期中的各种方法。

每个Activity类在定义是都必须继承android.app.Activity(1)onCreate():Activity初次创建时被调用,在该方法中一般进行一些静态设置,如创建View视图,进行数据绑定。

java中inputstream用法

java中inputstream用法

Java中InputStream用法简介在Java中,InputStream是一个抽象类,它是所有输入流的父类。

它提供了一种读取字节流的方式,可以从不同来源读取数据,如文件、网络连接等。

InputStream是输入操作的基础类,通过继承该类,可以获得读取二进制数据的能力。

InputStream的继承关系在Java的输入流类库中,InputStream是一个抽象类,其中定义了读取字节流的基本方法,其他具体的输入流类都是InputStream的子类。

以下是一些常见的InputStream子类: - FileInputStream:从文件中读取数据。

- ByteArrayInputStream:从内存中的字节数组中读取数据。

- FilterInputStream:过滤器input stream。

- DataInputStream:读取基本数据类型数据。

- BufferedInputStream:带有缓冲区的输入流。

- ObjectInputStream:读取序列化对象。

继承关系如下图所示:InputStream的基本用法读取单个字节使用InputStream的read()方法可以从输入流中读取一个字节,并返回该字节的值。

如果已经读取到流的末尾,read()方法将返回-1。

下面是一个读取单个字节的示例代码:InputStream inputStream = new FileInputStream("input.txt");int byteValue;while ((byteValue = inputStream.read()) != -1) {// 处理读取的字节System.out.print((char) byteValue);}inputStream.close();读取字节数组除了读取单个字节,InputStream还提供了读取字节数组的方法。

使用read(byte[] b)方法可以从输入流中读取一定数量的字节,存储到给定的字节数组中。

java字符输入输出流的用法

java字符输入输出流的用法

Java字符输入输出流是用来处理字符流的,比较适合处理文本文件。

1. InputStreamReader和OutputStreamWriterJava提供了InputStreamReader和OutputStreamWriter两个类,分别用于将字节流转换成字符流,以及将字符流转换成字节流。

它们可以指定字符集,实现不同字符编码之间的转换。

2. FileReader和FileWriterFileReader和FileWriter分别用于读取和写入字符文件。

它们默认使用评台默认的字符编码,也可以指定字符编码。

3. BufferedReader和BufferedWriterBufferedReader和BufferedWriter是字符输入输出流的缓冲流,它们可以提高读写的效率。

BufferedReader可以一次读取一行字符,BufferedWriter可以一次写入一行字符。

4. PrintWriterPrintWriter是字符输出流的高级类,它提供了很多方便的方法来输出各种类型的数据,比如字符串、整数、浮点数等。

5. 字符输入输出流的使用示例下面是一个使用字符输入输出流读写文件的示例:```javaimport java.io.*;public class FileCopy {public static void m本人n(String[] args) {try (BufferedReader reader = new BufferedReader(new FileReader("input.txt"));BufferedWriter writer = new BufferedWriter(new FileWriter("output.txt"))) {String line;while ((line = reader.readLine()) != null) {writer.write(line);writer.newLine();}} catch (IOException e) {e.printStackTrace();}}}```在这个例子中,我们使用BufferedReader和BufferedWriter来读取和写入文本文件,通过BufferedReader的readLine方法一次读取一行字符,然后通过BufferedWriter的write和newLine方法来写入文件。

java get请求 方法

java get请求 方法

java get请求方法"Java Get请求方法"引言:在网络开发中,我们经常需要使用HTTP协议来进行数据的传输和交互。

HTTP 协议有多种请求方法,包括GET、POST、PUT、DELETE等。

本篇文章将着重介绍Java中的GET请求方法,包括使用Java标准库的URLConnection类和使用第三方库Apache HttpClient来发送GET请求。

第一步:使用Java标准库的URLConnection类发送GET请求(简介)Java标准库提供了URLConnection类来进行HTTP请求的发送和接收。

它支持多种请求方法,其中包括GET请求。

下面是使用URLConnection发送GET 请求的步骤:1. 创建URL对象,指定要请求的URL地址。

2. 调用URL对象的openConnection方法,返回URLConnection对象。

3. 调用URLConnection对象的setRequestMethod方法,设置请求方法为GET。

4. 调用URLConnection对象的connect方法,建立与目标URL的连接。

5. 获取URLConnection对象的输入流,读取接收到的数据。

6. 关闭连接。

下面我们将详细介绍每一步的具体实现。

第二步:使用Java标准库的URLConnection类发送GET请求(具体实现)1. 创建URL对象,指定要请求的URL地址。

javaURL url = new URL("2. 调用URL对象的openConnection方法,返回URLConnection对象。

javaURLConnection conn = url.openConnection();3. 调用URLConnection对象的setRequestMethod方法,设置请求方法为GET。

javaconn.setRequestMethod("GET");4. 调用URLConnection对象的connect方法,建立与目标URL的连接。

java请求get写法

java请求get写法

java请求get写法Java请求GET写法在Java程序中,我们经常需要使用HTTP请求发送GET请求获取数据。

GET请求是最常见的一种HTTP请求方法,用于从服务器获取指定的资源。

接下来,我将一步一步回答你提出的问题,详细介绍Java中如何发送GET 请求。

第一步:导入必要的类库发送HTTP请求,我们需要使用Java的网络编程API,主要是 包中的相关类和接口。

因此,在开始编写代码之前,我们需要导入下面的类库:import java.io.BufferedReader;import java.io.InputStreamReader;import .HttpURLConnection;import .URL;第二步:创建URL对象在发送GET请求之前,我们首先需要创建一个URL对象,用于指定请求的URL地址。

URL类是Java提供的一个用于表示URL的类,通过它可以获得URL的各个部分,如协议、主机、端口、路径等。

String urlStr = "URL url = new URL(urlStr);第三步:打开HTTP连接接下来,我们需要通过URL对象打开一个HTTP连接,以便发送GET请求和接收服务器的响应。

在Java中,我们可以通过调用`openConnection()`方法来创建一个HttpURLConnection对象,并将其强制转换为HttpURLConnection类。

HttpURLConnection conn = (HttpURLConnection)url.openConnection();第四步:设置请求方法默认情况下,HttpURLConnection对象使用的请求方法是GET。

但是,为了清晰明确,我们可以通过调用`setRequestMethod()`方法来显式地设置请求方法为GET。

conn.setRequestMethod("GET");第五步:设置请求头部在发送GET请求之前,有时我们需要设置一些请求头部,如User-Agent、Authorization等。

JSP实现多个文件上传的两种方法

JSP实现多个文件上传的两种方法

JSP实现多个⽂件上传的两种⽅法JSP 实现多个⽂件上传的两种⽅法JSP实现⽂件上传的实现⽅式是这样的:使⽤ServletRequest类的getInputStream()⽅法获得⼀个客户端向服务器发出的数据流,然后处理这个数据流,从中分析得到⽂件上传中传递到服务器的各个参数和数据,然后将其中的⽂件数据存储为⼀个⽂件或插⼊到数据库中。

通常JSP页⾯中不处理⽂件的上传功能,⽽是把这些功能放到Servlet 或JavaBean中去实现。

使⽤Servlet完成⽂件上传的例⼦在其他JSP书籍中有所介绍,这⾥只介绍使⽤JeanBean是如何完成⽂件上传的。

JSP中实现⽂件的上传可以采⽤两种⽅式即采⽤HTTP协议和FTP协议实现,⼆者在传输的原理上存在很⼤的差异。

以下将结合源代码对它们的实现做简单介绍,相信读者会从中有所收获。

在JSP中使⽤JavaBean实现基于Web的⽂件上传功能⼀般需要三种⽂件结合完成。

这三种⽂件分别是提供界⾯的HTML页⾯⽂件、完成调⽤实现上传功能的JavaBean的JSP⽂件和实现JavaBean的Java的类⽂件。

1.采⽤HTTP协议实现多个⽂件的上传在过去的HTML页⾯中,表单不能实现⽂件的上传,这多少限制了⼀些⽹页的功能。

RFC1867规范(即HTML中实现基于表单的⽂件上传)对表单作出了扩展,增加了⼀个表单元素(input type=file)。

通过使⽤这个元素,浏览器会⾃动⽣成⼀个输⼊框和⼀个按钮,输⼊框可供⽤户填写本地的⽂件名和路径名,按钮可以让浏览器打开⼀个⽂件选择框供⽤户选择⽂件。

具体的表单实现如下:选择了⽂件后直接输⼊本地⽂件的绝对路径,表单的action属性值是*.jsp,这意味着请求(包括上载的⽂件)将发送给*.jsp⽂件。

在这个过程中实际上就实现了HTTP⽅式的⽂件上载。

⽂件从客户端到服务器的上传是由HTTP协议的通⽤⽹关界⾯(CGI)⽀持的。

这种上载⽅式要求浏览器和WEB服务器两⽅⾯都能够⽀持Rfc1867。

HTTPS

HTTPS

HTTPS制作人:刘聪一、简介HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,是HTTP的安全版。

即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。

它是一个URI scheme(抽象标识符体系),句法类同http:体系。

用于安全的HTTP数据传输。

https:URL表明它使用了HTTP,但HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间)。

这个系统的最初研发由网景公司进行,提供了身份验证与加密通讯方法,现在它被广泛用于万维网上安全敏感的通讯,例如交易支付方面。

它是由Netscape开发并内置于其浏览器中,用于对数据进行压缩和解压操作,并返回网络上传送回的结果。

HTTPS实际上应用了Netscape的安全套接字层(SSL)作为HTTP应用层的子层。

(HTTPS使用端口443,而不是象HTTP那样使用端口80来和TCP/IP进行通信。

)SSL使用40 位关键字作为RC4流加密算法,这对于商业信息的加密是合适的。

HTTPS和SSL支持使用X.509数字认证,如果需要的话用户可以确认发送者是谁。

两种主要作用:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。

二、HTTPS解决的问题1. 信任主机的问题.采用https 的server(服务器)必须从CA (Certificate Authority)申请一个用于证明服务器用途类型的证书. 该证书只有用于对应的server 的时候,客户端才信任此主机. 所以目前所有的银行系统网站,关键部分应用都是https 的. 客户通过信任该证书,从而信任了该主机. 其实这样做效率很低,但是银行更侧重安全. 这一点对我们没有任何意义,我们的server ,采用的证书不管自己issue(发布)还是从公众的地方issue, 客户端都是自己人,所以我们也就肯定信任该server2. 通讯过程中的数据的泄密和被篡改1) 一般意义上的https, 就是server 有一个证书.a) 主要目的是保证server 就是他声称的server.b) 服务端和客户端之间的所有通讯,都是加密的.i. 具体讲,是客户端产生一个对称的密钥,通过server 的证书来交换密钥. 一般意义上的握手过程.ii. 接下来所有的信息往来就都是加密的. 第三方即使截获,也没有任何意义.因为他没有密钥. 当然篡改也就没有什么意义了.2) 少许对客户端有要求的情况下,会要求客户端也必须有一个证书.a) 这里客户端证书,其实就类似表示个人信息的时候,除了用户名/密码, 还有一个CA认证过的身份. 因为个人证书一般来说是别人无法模拟的,所有这样能够更深的确认自己的身份.b) 目前少数个人银行的专业版是这种做法,具体证书可能是拿U盘(即U盾)作为一个备份的载体.三、SSL协议的握手过程为了便于更好的认识和理解SSL 协议,这里着重介绍SSL 协议的握手协议。

string的getbytes方法

string的getbytes方法

string的getbytes方法String类是Java中最常用的类之一。

它被许多程序员用来处理文本数据。

在Java中,字符串是不可变的,这意味着一旦创建了字符串对象,就不能再更改它。

由于这个原因,字符串对象具有高度的稳定性和重用性。

在Java 中,有许多方法可用于处理字符串,其中包括getBytes()方法。

在本文中,我们将探讨string的getbytes方法的使用。

1. getBytes()方法在Java中,getbytes()方法是String类的一个重要方法,用于将给定字符串转换为字节数组。

这种方法有几种不同的变体,包括一个可以指定字符集的版本,以及一个不指定字符集的版本。

这个方法可以帮助程序员在不同的系统或平台之间传递数据时进行编码/解码操作。

2. 常见的字符串编码Java中支持许多不同的编码方式。

对于中文字符,ASCII编码不够用,必须考虑采用Unicode编码或UTF-8编码。

其中,UTF-8编码被广泛应用。

在Java中,可以通过使用不同的字符集,将字符串转换为字节数组,并在需要的时候进行反向转换。

3. getBytes()方法参数当为getBytes()方法指定参数时,可以将该方法用于指定的字符集。

这个参数可以是一个字符串,指定使用的字符集,也可以是一个Charset对象。

简单来说,使用getBytes()方法可以将字符串转换为特定编码的字节数组。

例如,以下代码将使用UTF-8编码将字符串转换为字节数组:``` String str = "中文字符串"; byte[] array = str.getBytes("UTF-8"); ```4. 不指定字符集的getBytes()方法如果不指定字符集,则getBytes()方法默认使用平台指定的编码。

这种方法不安全,在不同的平台之间传递数据时会产生问题。

在这种情况下,可以指定一个字符集来确保数据的可移植性。

如何编写可扩展的配置文件动态加载和修改配置参数

如何编写可扩展的配置文件动态加载和修改配置参数

如何编写可扩展的配置文件动态加载和修改配置参数配置文件是一种用于存储和管理应用程序配置参数的文本文件,它通常以键值对的形式存在。

在开发过程中,经常需要对配置文件进行动态加载和修改配置参数的操作,以满足不同环境或需求的变化。

本文将介绍如何编写可扩展的配置文件,并实现配置参数的动态加载和修改。

一、配置文件基本格式配置文件通常以扩展名为".properties"或".conf"的文件形式存在,使用UTF-8编码。

其中,每行配置项由"键=值"的形式组成,可以使用"#"或";"作为注释标识,以便于说明配置项或对其进行注释。

例如:```properties# 这是一个配置文件示例# 注释行以#开始# 配置项1key1=value1# 配置项2key2=value2```二、加载配置文件在Java开发中,通常可以使用Properties类加载配置文件,并获取其中的配置参数。

具体步骤如下:1. 创建Properties对象,并加载配置文件:```javaProperties props = new Properties();try (InputStream inputStream = newFileInputStream("config.properties")) {props.load(inputStream);} catch (IOException e) {e.printStackTrace();}```2. 获取配置参数:```javaString value1 = props.getProperty("key1");String value2 = props.getProperty("key2");```三、动态加载和修改配置参数为了实现配置文件的动态加载和修改配置参数,可以利用Java的反射机制,通过注解和注入的方式将配置参数自动加载到应用程序中。

inputstreamreader用法

inputstreamreader用法

inputstreamreader用法InputStreamReader是Java编程语言的一种输入流,它能够从InputStreams中读取字符(像从文件中读取数据一样),它需要先建立一个InputStream对象,然后以InputStream对象作为参数创建一个InputStreamReader实例。

下面是一个使用InputStreamReader的具体示例:1、创建一个基于文件的InputStream:FileInputStream inputStream = new FileInputStream("<文件路径>");2、创建一个InputStreamReader:InputStreamReader reader = new InputStreamReader(inputStream);3、使用InputStreamReader读取数据,获取字符:int data = reader.read();4、关闭InputStreamReader:reader.close();用InputStreamReader能够从文件中读取字符,利用它可以搭建一个文件读写系统,把文件中要读取的数据经过InputStreamReader传递给本地程序来操作,而不需要一次性讲文件中数据载入程序运算。

这是一种逐字读取InputStream的方式,能够更方便地处理从输入流中读取的数据。

InputStreamReader有一些重要的构造方法,比如:(1)InputStreamReader(InputStream in):接受一个InputStream实例。

(2)InputStreamReader(InputStream in, String charsetName):接受一个InputStream实例,和指定的字符集编码。

(3)InputStreamReader(InputStream in, Charset cs):接受一个InputStream实例,和指定的字符集编码。

inputstreamreader和outputstreamwriter的常用方法

inputstreamreader和outputstreamwriter的常用方法

inputstreamreader和outputstreamwriter的常用方法InputStreamReader和OutputStreamWriter是Java中用于处理字符流的类。

下面是它们的一些常用方法:
1. InputStreamReader的常用方法:
public int read(): 从输入流中读取一个字符,返回-1表示输入结束。

public int read(char[] cbuf): 从输入流中读取字符并将其存储到缓冲区数组cbuf中,返回实际读取的字符数。

public int read(char[] cbuf, int off, int len): 从输入流中读取字符并将其存储到缓冲区数组cbuf中,off表示起始位置,len表示读取的字符数。

public void close(): 关闭输入流。

2. OutputStreamWriter的常用方法:
public void write(int c): 将一个字符写入输出流。

public void write(char[] cbuf): 将字符数组cbuf中的字符
写入输出流。

public void write(char[] cbuf, int off, int len): 将字符数组cbuf中从off位置开始的len个字符写入输出流。

public void flush(): 清空输出流的缓冲区,确保所有数据都被写出。

public void close(): 关闭输出流。

java中string类的方法

java中string类的方法

java中string类的方法Java中的String类是一个非常常用的类,它的方法非常丰富,提供了很多方便而强大的功能。

在接下来的文章中,我将为大家介绍一些常用的String类的方法。

1. length()方法:获取字符串的长度。

它返回一个整数,表示字符串中字符的个数。

2. charAt(int index)方法:获取字符串中指定位置的字符。

需要传入一个整数作为参数,表示要获取的字符在字符串中的索引。

3. concat(String str)方法:将字符串与指定的字符串连接起来。

返回一个新的字符串,其中包含原字符串与指定字符串的连接结果。

4. equals(Object anObject)方法:比较两个字符串是否相等。

如果字符串相等,则返回true;否则返回false。

5. compareTo(String anotherString)方法:将字符串与另一个字符串进行比较。

如果字符串在字典上排序靠前,返回一个小于0的整数;如果字符串在字典上排序靠后,返回一个大于0的整数;如果两个字符串相等,返回0。

6. isEmpty()方法:判断字符串是否为空。

如果字符串长度为0,则返回true;否则返回false。

7. toLowerCase()方法:将字符串转换为小写。

返回一个新的字符串,其中包含原字符串转换为小写的结果。

8. toUpperCase()方法:将字符串转换为大写。

返回一个新的字符串,其中包含原字符串转换为大写的结果。

9. trim()方法:去除字符串两端的空格。

返回一个新的字符串,其中包含去除空格后的结果。

10. startsWith(String prefix)方法:判断字符串是否以指定字符串开头。

如果字符串以指定字符串开头,则返回true;否则返回false。

11. endsWith(String suffix)方法:判断字符串是否以指定字符串结尾。

如果字符串以指定字符串结尾,则返回true;否则返回false。

Js公共操作类之String扩展方法介绍(一)

Js公共操作类之String扩展方法介绍(一)

Js公共操作类之String扩展⽅法介绍(⼀)Js公共操作类之 String 扩展⽅法介绍(⼀) 本⽂章介绍⼀些⼯作中常见的字符串判断、操作和类型转换,这些扩展⽅法本⾝并没有什么特别之处,都是将常见的操作封装起来,这样⽤起来更加便捷。

封装就是为了能实现快速开发(个⼈理解),⽐如我在做项⽬中,需要计算两个input 的值相加。

⼀般情况下可能是这样写1var sum = parseInt($(“#inputA”).value()) + parseInt($(“#inputB”).value()); 这样写符合逻辑,但是如果前台没有加输⼊限制,我在inputA 输⼊”你好”,inputB输⼊”我的世界”。

那么上⾯的这个等式就会等同于var sum = NaN + NaN; // parseInt() 转换失败则返回NaN。

此时的sum 就等于了NaN。

开发的时候不注意这些细节,后⾯测试妹妹或者客户⼤哥发现后还是要做代码处理,必然增加的时间来处这些本应该避免的问题。

从⽽增加了咱们宝贵的业务时间来该BUG。

⼀处代码这样写,不算多。

处理下就好了,如果我们的项⽬中许多地⽅都牵扯到在前端计算的时候,调整起来就⿇烦了,除⾮你的 Ctrl + C 和 Ctrl + V 的速度已经接近光速。

那么我们为什么不写个⽅法对 parseInt 进⾏处理呢,当转换结果为NaN 时给返回0,那么上⾯的输⼊内容求和就会变成0,则不会是⼤多数⼈看不懂的NaN 了。

//⼀般对 parseInt 简单封装:function _ parseInt(str){return isNaN(parseInt(this)) ? 0 : parseInt(this);}//使⽤的时候则是:var sum = _parseInt($(“#inputA”).value()) + _parseInt($(“#inputB”).value());这样写就能避免 NaN 的出现了。

JavaScriptstring字符串类型的扩展方法

JavaScriptstring字符串类型的扩展方法

JavaScriptstring字符串类型的扩展⽅法1. Js 判断前缀后缀代码和判空(含全部是空格):// Js 判断后缀String.prototype.endsWith = function(suffix) {return this.indexOf(suffix, this.length - suffix.length) !== -1;};// Js 判断前缀if (typeof String.prototype.startsWith != 'function') {// see below for better implementation!String.prototype.startsWith = function (str){return this.indexOf(str) == 0;};}// Js 判空(含全部是空格)String.prototype.IsNullEmptyOrSpace = function(){if (this== null) return true;return this.replace(/s/g, '').length == 0;};2. 去前后空格//去除左边的空格*/String.prototype.LTrim function(){return this.replace(/(^\s*)/g, "");}/*//去除右边的空格*/String.prototype.Rtrim function(){return this.replace(/(\s*$)/g, "");}/*//去除前后空格*/String.prototype.Trim function(){return this.replace(/(^\s*)|(\s*$)/g, "");}/*3. 取⼦串//得到左边的字符串*/String.prototype.Left function(len){if(isNaN(len)||lennull){len this.length;}else{if(parseInt(len)<0||parseInt(len)>this.length){len this.length;}}return this.substr(0,len);}/*//得到右边的字符串*/String.prototype.Right function(len){if(isNaN(len)||lennull){len this.length;}else{if(parseInt(len)<0||parseInt(len)>this.length){len this.length;}}return this.substring(this.length-len,this.length);}/*//得到中间的字符串,注意从0开始*/String.prototype.Mid function(start,len){return this.substr(start,len);}/*//在字符串⾥查找另⼀字符串:位置从0开始*/String.prototype.InStr function(str){if(strnull){str "";}return this.indexOf(str);}/*//在字符串⾥反向查找另⼀字符串:位置0开始*/String.prototype.InStrRev function(str){if(strnull){str "";}return stIndexOf(str);}/*4. 验证常⽤格式//是否是正确的IP地址*/String.prototype.isIP function(){var reSpaceCheck /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/;if (reSpaceCheck.test(this)){this.match(reSpaceCheck);if (RegExp.$1 < 255 && RegExp.$1 > 0&& RegExp.$2 < 255 && RegExp.$2 > 0&& RegExp.$3 < 255 && RegExp.$3 > 0&& RegExp.$4 < 255 && RegExp.$4 > 0){return true;}else{return false;}}else{return false;}}/*//是否是正确的长⽇期*/String.prototype.isLongDate function(){var r this.replace(/(^\s*)|(\s*$)/g, "").match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/);if(rnull){return false;}var d new Date(r[1], r[3]-1,r[4],r[5],r[6],r[7]);return (d.getFullYear()r[1]&&(d.getMonth()+1)r[3]&&d.getDate()r[4]&&d.getHours()r[5]&&d.getMinutes()r[6]&&d.getSeconds()r[7]); }/*//是否是正确的短⽇期*/String.prototype.isShortDate function(){var r this.replace(/(^\s*)|(\s*$)/g, "").match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/);if(rnull){return false;}var d new Date(r[1], r[3]-1, r[4]);return (d.getFullYear()r[1]&&(d.getMonth()+1)r[3]&&d.getDate()r[4]);}/*//是否是正确的⽇期*/String.prototype.isDate function(){return this.isLongDate()||this.isShortDate();}/*//是否是⼿机*/String.prototype.isMobile function(){return /^0{0,1}13[0-9]{9}$/.test(this);}/*//是否是邮件*/String.prototype.isEmail function(){return /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/.test(this);}/*//是否是邮编(中国)*/String.prototype.isZipCode function(){return /^[\\d]{6}$/.test(this);}/*//是否是有汉字*/String.prototype.existChinese function(){//[\u4E00-\u9FA5]為漢字﹐[\uFE30-\uFFA0]為全⾓符號return /^[\x00-\xff]*$/.test(this);}/*//是否是合法的⽂件名/⽬录名*/String.prototype.isFileName function(){return !/[\\\/\*\?\|:"<>]/g.test(this);}/*//是否是有效链接*/String.prototype.isUrl function(){return /^http[s]?:\/\/([\w-]+\.)+[\w-]+([\w-./?%&]*)?$/i.test(this);}/*//是否是有效的⾝份证(中国)*/String.prototype.isIDCard function(){var iSum0;var info"";var sId this;var aCity{11:"北京",12:"天津",13:"河北",14:"⼭西",15:"内蒙古",21:"辽宁",22:"吉林",23:"⿊龙江",31:"上海",32:"江苏",33:"浙江",34:"安徽",35:"福建",36:"江西",37:"⼭东",41:"河南",42:"湖北",43:"湖南",44:"⼴东",45:"⼴西",46:"海南",50:"重庆",51:"四if(!/^\d{17}(\d|x)$/i.test(sId)){return false;}sIdsId.replace(/x$/i,"a");//⾮法地区if(aCity[parseInt(sId.substr(0,2))]null){return false;}var sBirthdaysId.substr(6,4)+"-"+Number(sId.substr(10,2))+"-"+Number(sId.substr(12,2));var dnew Date(sBirthday.replace(/-/g,"/"))//⾮法⽣⽇if(sBirthday!(d.getFullYear()+"-"+ (d.getMonth()+1) + "-" + d.getDate())){return false;}for(var i 17;i>0;i--){iSum + (Math.pow(2,i) % 11) * parseInt(sId.charAt(17 - i),11);}if(iSum%11!1){return false;}return true;}/*//是否是有效的电话号码(中国)*/String.prototype.isPhoneCall function(){return /(^[0-9]{3,4}\-[0-9]{3,8}$)|(^[0-9]{3,8}$)|(^\([0-9]{3,4}\)[0-9]{3,8}$)|(^0{0,1}13[0-9]{9}$)/.test(this);}/*//是否是数字*/String.prototype.isNumeric function(flag){//验证是否是数字if(isNaN(this)){return false;}switch(flag){case null: //数字case "":return true;case "+": //正数return /(^\+?|^\d?)\d*\.?\d+$/.test(this);case "-": //负数return /^-\d*\.?\d+$/.test(this);case "i": //整数return /(^-?|^\+?|\d)\d+$/.test(this);case "+i": //正整数return /(^\d+$)|(^\+?\d+$)/.test(this);case "-i": //负整数return /^[-]\d+$/.test(this);case "f": //浮点数return /(^-?|^\+?|^\d?)\d*\.\d+$/.test(this);case "+f": //正浮点数return /(^\+?|^\d?)\d*\.\d+$/.test(this);case "-f": //负浮点数return /^[-]\d*\.\d$/.test(this);default: //缺省return true;}}/*//是否是颜⾊(#FFFFFF形式)*/String.prototype.IsColor function(){var temp this;if (temp"") return true;if (temp.length!7) return false;return (temp.search(/\#[a-fA-F0-9]{6}/) ! -1);}/*5. 格式转换(全⾓,⽇期,Html编码)//转换成全⾓*/String.prototype.toCase function(){var tmp "";for(var i0;i<this.length;i++){if(this.charCodeAt(i)>0&&this.charCodeAt(i)<255){tmp + String.fromCharCode(this.charCodeAt(i)+65248); }else{tmp + String.fromCharCode(this.charCodeAt(i));}}return tmp}/*//对字符串进⾏Html编码*/String.prototype.toHtmlEncode function(){var str this;strstr.replace(/&/g,"&");strstr.replace(/</g,"<");strstr.replace(/>/g,">");strstr.replace(/\'/g,"'");strstr.replace(/\"/g,""");strstr.replace(/\n/g,"<br>");strstr.replace(/\ /g," ");strstr.replace(/\t/g," ");return str;}/*//转换成⽇期*/String.prototype.toDate function(){try{return new Date(this.replace(/-/g, "\/"));}catch(e){return null;}}6.其他//计算字符串打印长度*/String.prototype.LengthW function(){return this.replace(/[^\x00-\xff]/g,"**").length;}/*。

String和Xml之间的转换、String转InputStream (转)

String和Xml之间的转换、String转InputStream (转)

String和Xml之间的转换、String转InputStream (转)通常在操作xml的时候,都是通过inputseam(无数状况下是FileInputStream)来读入xml并转为dom的,无数人会碰到这种状况数据不是从文件读入的而是从String中取得的于是会用法InputStream in = new ByteArrayInputStream (str.getBytes());来取得inputstream ,但是这种InputStream中数据被转成了byte数组,所以转dom的时候就会报错可以通过一下思路来解决 // 字符串转XML view plaiopy to clipboardprint?String xmlStr = \"......\";StringReader sr = new StringReader(xmlStr); InputSource is = new InputSource(sr); DocumentBuilderFactory factory =DocumentBuilderFactory.newInstance(); DocumentBuilderbuilder=factory.newDocumentBuilder(); Document doc =builder.parse(is); String xmlStr = \"......\"; StringReader sr = new StringReader(xmlStr); InputSource is = new InputSource(sr); DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder=factory.newDocumentBuilder(); Document doc = builder.parse(is); //XML转字符串 view plaincopy to clipboardprint?TransfoerFactory tf = TransformerFactory.newInstance(); Transformer t =tf.newTransformer();t.OutputProperty(\"encoding\",\"GB23121\");//解决中文问题,试过用GBK不可 ByteArrayOutputStream bos = new ByteArrayOutputStream(); t.transform(new DOMSource(doc), new StreamRelt(bos)); String xmlStr = bos.toString();第1页共1页。

java string insert 方法

java string insert 方法

java string insert 方法在Java中,字符串是一个不可变的对象,这意味着一旦创建了一个字符串,就不能修改它的内容。

但是,你可以通过创建一个新的字符串来插入或添加字符串的一部分到另一个字符串中。

例如,如果你想在一个字符串中插入另一个字符串,你可以使用 `StringBuilder` 或 `StringBuffer` 类来实现。

这两个类都提供了 `insert()` 方法,可以用来在字符串的指定位置插入另一个字符串。

下面是一个使用 `StringBuilder` 类的示例:```javapublic class Main {public static void main(String[] args) {StringBuilder sb = new StringBuilder("Hello"); sb.insert(5, " World");System.out.println(sb.toString());}}```在这个例子中,我们首先创建了一个 `StringBuilder` 对象,并给它分配了一个初始字符串 "Hello"。

然后,我们使用`insert()` 方法在索引位置 5 插入了字符串 " World"。

最后,我们使用 `toString()` 方法将 `StringBuilder` 对象转换回一个字符串,并打印出来。

输出将是 "Hello World"。

如果你想在字符串的开始或结尾处插入一个字符串,你可以使用 `insert()` 方法的另一种形式,它接受一个额外的参数来指示插入的位置:```javapublic class Main {public static void main(String[] args) {StringBuilder sb = new StringBuilder("Hello"); sb.insert(0, " World"); // 在开始处插入System.out.println(sb.toString()); // 输出"WorldHello"sb.insert(6, " World"); // 在结尾处插入System.out.println(sb.toString()); // 输出"WorldHello World"}}```。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

给string 增加一个GetInputStream 扩展方法有时候,我们需要读取一些数据,而不管这数据来源于磁盘上的数据文件,还是来源于网络上的数据。

于是,就有了下面的StringExtensions.cs:复制代码1 using System;2 using System.IO;3 using ;45 namespace Skyiv6 {7 public static class StringExtensions8 {9 public static Stream GetInputStream(this string fileNameOrUri, string user = null, string password = null)10 {11 if (!Uri.IsWellFormedUriString(fileNameOrUri, UriKind.Absolute)) return File.OpenRead(fileNameOrUri);12 var uri = new Uri(fileNameOrUri);13 if (uri.Scheme == Uri.UriSchemeHttp || uri.Scheme == Uri.UriSchemeHttps) return uri.GetHttpStream();14 if (uri.Scheme == Uri.UriSchemeFtp) return uri.GetFtpStream(user, password);15 if (uri.Scheme == Uri.UriSchemeFile) return uri.GetFileStream();16 throw new NotSupportedException("Notsupported uri scheme: " + uri.Scheme);17 }1819 static Stream GetFtpStream(this Uri uri, string user = null, string password = null)20 {21 var ftp = (FtpWebRequest)WebRequest.Create(uri);22 if (user != null && user != "anonymous" && user != "ftp")23 ftp.Credentials = new NetworkCredential(user, password);24 ftp.Method = WebRequestMethods.Ftp.DownloadFile;25 return ((FtpWebResponse)ftp.GetResponse()).GetResponseStream();26 }2728 static Stream GetHttpStream(this Uri uri)29 {30 return ((HttpWebResponse)((HttpWebRequest)WebRequest.Create(uri)).GetResponse()).GetResponseStream();31 }3233 static Stream GetFileStream(this Uri uri)34 {35 return ((FileWebResponse)((FileWebRequest)WebRequest.Create(uri)).GetResponse()).GetResponseStream();36 }37 }38 }复制代码上述程序中:第9 到17 行的GetInputStream 扩展方法返回来读取的数据的输入流。

第11 行调用Uri 类的静态方法IsWellFormedUriString 判断是否从网络上读取数据。

如不是,则直接调用File 类的静态方法OpenRead 得到输入流。

第12 行构造一个Uri 类的实例。

第13 行处理输入使用http 或者https 协议的情况。

第14 行处理输入使用ftp 协议的情况。

第15 行处理输入使用file 协议的情况。

第16 行处理其他协议,就是直接抛出一个NotSupportedException 异常,表示我们只支持上述四种协议。

第19 到26 行的GetFtpStream 扩展方法用于获得FTP 服务器上发送的响应数据的输入流,可以是匿名的,也可以是非匿名的。

第28 到31 行的GetHttpStream 扩展方法用于获得使用http 或者https 协议的网络流。

第33 到36 行的GetFileStream 扩展方法用于获得使用file 协议的本地磁盘文件系统的数据流。

下面就是测试用的CopyTester.cs:复制代码1 using System.IO;23 namespace Skyiv.Test4 {5 static class CopyTester6 {7 static void Main(string[] args)8 {9 args[0].GetInputStream().CopyTo(File.Create(args[1]));10 }11 }12 }复制代码这个测试程序的功能就是拷贝数据,需要两个命令行参数:第一个命令行参数指定数据来源,可以是本地磁盘文件,也可以是网络数据,支持https、http、ftp 和file 协议,当然,file 协议实际上还是读取本地磁盘文件。

第二个命令行参数指定将要拷贝到的本地磁盘文件的名称。

上述测试程序实质内容就是第9 行的语句:使用第一个命令行参数args[0] 调用String 类的GetInputStream 扩展方法得到输入流。

调用Stream 类的CopyTo 方法将输入流拷贝到输出流。

输出流是使用File 类的静态方法Create 得到的。

在Windows 操作系统中编译和运行:E:\work> csc CopyTester.cs StringExtensions.csMicrosoft(R) Visual C# 2010 编译器4.0.30319.1 版版权所有(C) Microsoft Corporation。

保留所有权利。

E:\work> CopyTester https:///mono/xsp/zipball/master mono-xsp.zipE:\work> CopyTester .tw/Downloads/Connector-Net/mysql-connector-net-6.5.4-noinstall.zip mysql-connector.zipE:\work> CopyTester ftp://.tw/pub/MySQL/Downloads/Connector-Net/mysql-connector-net-6.5.4-noinstall.zip mysql-connector.2.zipE:\work> CopyTester file:///E:/work/mysql-connector.zip mysql-connector.3.zipE:\work> CopyTester mysql-connector.zip mysql-connector.4.zipE:\work> dir *.zip2012/03/11 09:35 468,024 mono-xsp.zip2012/03/11 09:37 4,176,361 mysql-connector.2.zip2012/03/11 09:38 4,176,361 mysql-connector.3.zip2012/03/11 09:38 4,176,361 mysql-connector.4.zip2012/03/11 09:36 4,176,361 mysql-connector.zip上面分别测试了以https、http、ftp、file 协议读取网络数据,以及从本地磁盘上读取数据。

注意,file 协议实际上还是从本地磁盘读取数据。

在Linux 操作系统中编译和运行:ben@vbox:~/work> dmcs CopyTester.cs StringExtensions.csben@vbox:~/work> mono CopyTester.exe .tw/Downloads/Connector-Net/mysql-connector-net-6.5.4-noinstall.zip mysql-connector.zip ben@vbox:~/work> mono CopyTester.exe ftp://.tw/pub/MySQL/Downloads/Connector-Net/mysql-connector-net-6.5.4-noinstall.zip mysql-connector.2.zipben@vbox:~/work> mono CopyTester.exe file:///home/ben/work/mysql-connector.zip mysql-connector.3.zipben@vbox:~/work> mono CopyTester.exe mysql-connector.zip mysql-connector.4.zipben@vbox:~/work> ls -l *.zip-rw-r--r-- 1 ben users 4176361 Mar 11 09:54 mysql-connector.2.zip-rw-r--r-- 1 ben users 4176361 Mar 11 10:01 mysql-connector.3.zip-rw-r--r-- 1 ben users 4176361 Mar 11 10:01 mysql-connector.4.zip-rw-r--r-- 1 ben users 4176361 Mar 11 09:53 mysql-connector.zip在Windows 操作系统可以正常读取网络上的https 数据流,在Linux 操作系统中会失败:ben@vbox:~/work> mono CopyTester.exe https:///mono/xsp/zipball/master mono-xsp.zipUnhandled Exception: .WebException: Error getting response stream (Write: The authentication or decryption has failed.): SendFailure ---> System.IO.IOException: The authentication or decryption has failed. ---> Mono.Security.Protocol.Tls.TlsException: Invalid certificate received from server. Error code: 0xffffffff800b010aat Mono.Security.Protocol.Tls.Handshake.Client.TlsServerCertificate.validateCertificates (Mono.Security.X509.X509CertificateCollection certificates) [0x00000] in :0at Mono.Security.Protocol.Tls.Handshake.Client.TlsServerCertificate.ProcessAsTls1 () [0x00000] in :0at Mono.Security.Protocol.Tls.Handshake.HandshakeMessage.Process () [0x00000] in :0at (wrapper remoting-invoke-with-check) Mono.Security.Protocol.Tls.Handshake.HandshakeMessage:Process ()at Mono.Security.Protocol.Tls.ClientRecordProtocol.ProcessHandshakeMessage (Mono.Security.Protocol.Tls.TlsStream handMsg) [0x00000] in :0at Mono.Security.Protocol.Tls.RecordProtocol.InternalReceiveRecordCallback (IAsyncResult asyncResult) [0x00000] in :0--- End of inner exception stack trace ---at Mono.Security.Protocol.Tls.SslStreamBase.AsyncHandshakeCallback (IAsyncResult asyncResult) [0x00000] in :0--- End of inner exception stack trace ---at .HttpWebRequest.EndGetResponse (IAsyncResult asyncResult) [0x00000] in :0at .HttpWebRequest.GetResponse () [0x00000] in :0at Skyiv.StringExtensions.GetHttpStream (System.Uri uri) [0x00000] in :0at Skyiv.StringExtensions.GetInputStream (System.String fileNameOrUri, System.String user, System.String password) [0x00000] in :0at Skyiv.Test.CopyTester.Main (System.String[] args) [0x00000] in :0[ERROR] FATAL UNHANDLED EXCEPTION: .WebException: Error getting response stream (Write: The authentication or decryption has failed.): SendFailure ---> System.IO.IOException: The authentication or decryption has failed. ---> Mono.Security.Protocol.Tls.TlsException: Invalid certificate received from server. Error code: 0xffffffff800b010aat Mono.Security.Protocol.Tls.Handshake.Client.TlsServerCertificate.validateCertificates (Mono.Security.X509.X509CertificateCollection certificates) [0x00000] in :0at Mono.Security.Protocol.Tls.Handshake.Client.TlsServerCertificate.ProcessAsTls1 () [0x00000] in :0at Mono.Security.Protocol.Tls.Handshake.HandshakeMessage.Process () [0x00000] in :0at (wrapper remoting-invoke-with-check) Mono.Security.Protocol.Tls.Handshake.HandshakeMessage:Process ()at Mono.Security.Protocol.Tls.ClientRecordProtocol.ProcessHandshakeMessage (Mono.Security.Protocol.Tls.TlsStream handMsg) [0x00000] in :0at Mono.Security.Protocol.Tls.RecordProtocol.InternalReceiveRecordCallback (IAsyncResult asyncResult) [0x00000] in :0--- End of inner exception stack trace ---at Mono.Security.Protocol.Tls.SslStreamBase.AsyncHandshakeCallback (IAsyncResult asyncResult) [0x00000] in :0--- End of inner exception stack trace ---at .HttpWebRequest.EndGetResponse (IAsyncResult asyncResult) [0x00000] in :0at GetResponse () [0x00000] in :0at Skyiv.StringExtensions.GetHttpStream (System.Uri uri) [0x00000] in :0at Skyiv.StringExtensions.GetInputStream (System.String fileNameOrUri, System.String user, System.String password) [0x00000] in :0at Skyiv.Test.CopyTester.Main (System.String[] args) [0x00000] in :0不知道是不是我的openSUSE 12.1 操作系统或者是Mono 2.10.6 运行环境还需要进行一些配置,以便满足https 的安全验证要求。

相关文档
最新文档