java替换中的字符
① java中怎么替换string中的某个字符
/¥392931String这个对于程序原来说一定是最熟悉不过的,很多时候我们都习惯去使用String的原生方法去完成查找字符串、替换、删除,而正则表达式由于略显苦涩的语法常常被人忽略,其实很多时候使用正则表达式可以提高不少性能和节省资源。
一、正则表达式简述
正则表达式正则表达是Java中比较矛盾的知识点,因为使用起来可以很简单也可以相当地有难度,但是对于字符串操作来说应用得当则事半功倍,字符串查找,搜索,匹配,替换等等,正则表达式无所不能。而所谓正则表达式本质就是一个字符串(这个字符串按照一定的语法和规范被构造出来作为限定条件),其主要参与者——Pattern和Matcher:Pattern是Java正则表达式API中的主要入口,是程序语言中对这个特殊正则字符串的编译表示,需要使用正则表达式,第一步都是从构造Pattern 类开始,而Matcher是输入字符串进行解释和匹配操作的引擎,通过解释 Pattern 对 Character sequence 执行匹配操作(即Matcher负责完成字符串的查找、匹配、替换等操作。)
二、正则表达式基本语法
1、预留字符
限定符
说明
. 任意英文字母
反斜杠, 单独的反斜杠做为转义字符,与其他特殊字符一起使用。如果想匹配反斜杠本身,需要转义。两个反斜杠实际匹配一个反斜杠n字符的8进制表示.n 在0至7之间取值
nn 字符的8进制表示.n 在0至7之间取值
mnn 字符的8进制表示. m 在0至3之间取值, n 在0至7之间取值
xhh 字符的16进制表示.
uhhhh 字符的16进制表示 0xhhhh. 对应unicode 编码字符
缩进符.
换行符 (unicode: ‘u000A’)
回车符 (unicode: ‘u000D’)
f 制表符 (unicode: ‘u000C’)
a 警报(铃声)字符 (unicode: ‘u0007′)
e 转义符 (unicode: ‘u001B’)
cx 控制符 x
d 匹配任意数字 [0-9]
D 匹配任意非数字 [^0-9]
s 匹配任意空白符 (空格, 缩进, 换行,回车)
S 匹配任意非空白符
w 匹配任意单词
W 匹配任意非单词
2、设置指定限定条件[](即“[]”表示的是中括符里的内容是条件)
限定符
说明
[a-z] 匹配小写a to z范围中任一个字符,又如[abc] 匹配 a, 或 b 或 c
[A-Z] 匹配大写A to Z范围中任一个字符
[a-zA-Z] 匹配小写a to z或大写A to Z范围中一个字符
[0-9] 匹配小写0 to 9范围中一个字符
[0-9a-z] 匹配小写0 to 9或a to z范围中一个字符
[0-9[a-z]] 匹配小写0 to 9或a to z范围中一个字符(交集)
[^abc] 匹配不是a,b,c 的字符,是否定匹配
[a-zA-Z] 匹配a 到 z ,A到Z 直接的字符,是范围匹配
[a-d[m-p]] 匹配a到d之间字符或 m到p之间字符,是并集匹配
[a-z&&[def]] 匹配 d, e, 或 f. 是交集匹配 (这里是在范围 a-z和字符def之间取交集).
[a-z&&[^bc]] 匹配a-z 之间所有字符,排除bc的字符。是减法匹配
[a-z&&[^m-p]] 匹配a-z 之间所有字符,排除m-p之间的字符是减法匹配
3、边界匹配
边界符
说明
^ 匹配行首
$ 匹配行尾
匹配单词边界
B 匹配非单词边界
A 匹配文本开头
G 匹配前一匹配项结尾
输入的结尾,仅用于最后的结束符(如果有的话)
z 匹配文本结尾
4、逻辑操作符和量词表示
正则表达式支持少量的逻辑运算(与,或)。与操作是默认的,表达式 cmo,意味着c 与 m与o。
或操作需要显示指定,用 | 表示。例如表达式 crazy|mo意味着crazy或 mo。
贪婪模式
饥饿模式
独占模式
说明
X? X?? X?+ 匹配0或1次,即出现X 0或者1次
X* X**? X*+ 匹配0或多次
X+ X+? X++ 匹配1或多次
X{n} X{n}? X{n}+ 匹配n次
X{n,} X{n,}? X{n,}+ 匹配最少n次
X{n, m} X{n, m}? X{n, m}+ 匹配最少n次,最多m次
三、正则表达式的应用
编译正则表达式的字符串值构造对应的模式Pattern对象
创建匹配给定输入与此模式的匹配器Matcher
通过匹配器对象执行操作,匹配器对象的方法很丰富,互相组合使用更加强大(JDK在线API)
public static String getNonBlankStr(String str) {
if(str!=null && !"".equals(str)) {
Pattern pattern = Pattern.compile("\s*| | | "); //去掉空格符合换行符
Matcher matcher = pattern.matcher(str);
String result = matcher.replaceAll("");
return result;
}else {
return str;
}
} 12345678910
public static String StringFilter(String str) throws PatternSyntaxException { // String regEx = "[^a-zA-Z0-9]"; // 只允许字母和数字
// 清除掉所有特殊字符(除了~之外)
String regEx="[`!@#$%^&*()+=|{}':;',//[//].<>/?!@#¥%……&*()——+|{}【】‘;:”“’。,、?]";
Pattern pattern = Pattern.compile(regEx);
Matcher matcher = pattern.matcher(str); return matcher.replaceAll("").trim();
}123456789
String text = "there are many hotels " +"by amap.the adrr: http://xxxx pattern.";String pattern = ".*http://.*";
boolean matches = Pattern.matches(pattern, text);//true则存在123
/**
* 结果:element = grjk Text
element = wwwdsf
element = Many
element = egsdg r geg
*/String text = "A reg grjk Text reg wwwdsf reg Many reg egsdg r geg";
String patternString = "reg";
Pattern pattern = Pattern.compile(patternString);
String[] split = pattern.split(text);for(String element : split){
System.out.println("element = " + element);
}1234567891011121314
/**
*结果:found: 1 : 2 - 4
found: 2 : 5 - 7
found: 3 : 23 - 25
found: 4 : 70 - 72
*/String text ="This is the text which is to be searched " +"for occurrences of the word 'is'.";
String patternString = "is";
Pattern pattern = Pattern.compile(patternString);
Matcher matcher = pattern.matcher(text);int count = 0;while(matcher.find()) {
count++;
System.out.println("found: " + count + " : " + matcher.start() + " - " + matcher.end());
}12345678910111213141516
Pattern pattern = Pattern.compile("[0-9]*");//判断是否都是数字
Matcher isNum = pattern.matcher("1123是数字");
if(isNum.matches()) {
System.out.println("全部是数字");
} else {
System.out.println("有汉字");
}
1、去掉字符串中的空格和换行符
2、去掉指定特殊字符
3、Pattern.matches()检查字符串中是否存在指定字符
4、Pattern.split()用正则表达式作为分隔符,把文本分割为String类型的数组
5、Matcher 实例的find() + start() + end()寻找字符串中指定字符串出现的次数和起始和结束的索引位置
6、Matcher 匹配指定格式的特殊字符串
② java怎么把一个字符串中的字符替换成别
先看下概念,最后面有说到修改
一.Java字符串类基本概念
在JAVA语言中,字符串数据实际上由String类所实现的。Java字符串类分为两类:一类是在程序中不会被改变长度的不变字符串;二类是在程序中会被改变长度的可变字符串。Java环境为了存储和维护这两类字符串提供了
String和StringBuffer两个类。
一、创建字符串
例: Stringstr=new("This is a String");
或者 Stringstr="This is a String";
二、得到字符串对象的有关信息
1.通过调用length()方法得到String的长度.
例:
String str="Thisis a String";
int len =str.length();
2.StringBuffer类的capacity()方法与String类的 length()的方法类似,但是她测试是分配给StringBuffer的内存空间的大小,而不是当前被使用了的内存空间。
3.如果想确定字符串中指定字符或子字符串在给定字符串的位置,可以用 indexOf()和lastIndexOf()方法。
String str="Thisis a String";
Int index1 =str.indexOf("i"); //index=2
Intindex2=str.indexOf(‘i‘,index+1); //index2=5
Intindex3=str.lastIndexOf("I"); //index3=15
Intindex4=str.indexOf("String"); //index4=10
三、修改可变字符串
StringBuffer类为可变字符串的修改提供了3种方法,在字符串中间插入和改变某个位置所在的字符。
1.在字符串后面追加:用append()方法将各种对象加入到字符串中。
2.在字符串中间插入:用insert()方法。例
StringBuffer str=new StringBuffer("Thisis a String");
Str.insert(9,"test");
System.out.println(str.toString());
这段代码输出为:Thisis a test String
3.改变某个位置所在的字符,用setCharAt()方法。
StringBuffer sb =new StringBuffer("aaaaaa");
sb.setCharAt(2, “b”);// 结果aabaaa
③ java怎么把一个字符串中的字符替换成别的字符
如何将字符串中的"\"替换成"\\":
String msgIn;
String msgOut;
msgOut=msgIn.replaceAll("\\\\","\\\\\\\\");
原因:
'\'在java中是一个转义字符,所以需要用两个代表一个。例如System.out.println( "\\" ) ;只打印出一个"\"。但是'\'也是正则表达式中的转义字符(replaceAll 的参数就是正则表达式),需要用两个代表一个。所以:\\\\被java转换成\\,\\又被正则表达式转换成\。
同样
CODE: \\\\\\\\
Java: \\\\
Regex: \\
将字符串中的'/'替换成'\'的几种方式:
msgOut= msgIn.replaceAll("/", "\\\\");
msgOut= msgIn.replace("/", "\\");
msgOut= msgIn.replace('/', '\\');
将字符串中的'\'替换成'/'的几种方式:
msgOut= msgIn.replaceAll("\\\\","/");
msgOut= msgIn.replace("\\","/");
④ java怎么替换字符串某个字符
replace方法
该方法的作用是替换字符串中所有指定的字符,然后生成一个新的字符串。经过该方法调用以后,原来的字符串不发生改变。例如:
String s = “abcat”;
String s1 = s.replace(‘a’,‘1’);
该代码的作用是将字符串s中所有的字符a替换成字符1,生成的新字符串s1的值是“1bc1t”,而字符串s的内容不发生改变。
如果需要将字符串中某个指定的字符串替换为其它字符串,则可以使用replaceAll方法,例如:
String s = “abatbac”;
String s1 = s.replaceAll(“ba”,“12”);
该代码的作用是将字符串s中所有的字符串“ab”替换为“12”,生成新的字符串“a12t12c”,而字符串s的内容也不发生改变。
如果只需要替换第一个出现的指定字符串时,可以使用replaceFirst方法,例如:
String s = “abatbac”;
String s1 = s. replaceFirst (“ba”,“12”);
该代码的作用是只将字符串s中第一次出现的字符串“ab”替换为字符串“12”,则字符串s1的值是“a12tbac”
⑤ java怎么替换字符串中的字符
publicstaticvoidmain(String[]args){
Stringstr="somestr";
str=str.replace('s','a');//按字符来进行替换,所有字符会被替换
str=str.replace("a","s");//按字符串来进行替换,指替换第一个匹配的
str=str.replaceAll("s","a");//按字符串来进行替换,所有字符会被替换
}
⑥ java 替换字符
我使用你的程序没问题哦
告诉你一点,你那个for给temp赋值没必要用String temp = new String(data);就好了,用String +那么多次,浪费资源
如果你需要替换所有的的话,将String newtemp=temp.replace("tihuan","g"); 改成String newtemp=temp.replaceAll("tihuan","g");
你程序的功能就是-->将f:\java\source.txt中的字符tihuan 替换成g,然后输出到f:\java\destnation1.txt 是这样吧,所以你要对比的时候就要去看source.txt和destnation1.txt两个文件的区别
temp=in.readLine();
while(temp!=null){
out.println(temp);
out.flush();
temp=in.readLine();
}
⑦ JAVA怎么替换字符串中的符号,如;:00594510=2609013500152=5801
java中的字符串替换应该用字符串自带的方法replace或者replceAll,但这里要用replaceAll,因为要替换多个符号,只有replaceAll可以接受正则表达式
replaceAll接受两个参数,第一个是正则表示,第二个是要替换后的字符
示例代码如下:
publicstaticvoidmain(Stringargs[]){
Strings=";:00594510=2609013500152=5801?";
System.out.println(s.replaceAll(";|:|=|\?",""));
}
运行结果如下
⑧ java怎样将字符串中的字母替换掉
一:思路:
使用java方法replaceAll();通过正则表达式匹配替换掉所有的字母。
二:代码如下(可直接复制出来运行,在控制台中查看效果):
publicstaticvoidmain(String[]args){
Stringstr="abc123123成你懂吗bxcxsaf";
//通过正则表达式替换掉所有的字母
StringstrNew=str.replaceAll("[a-zA-Z]","");
System.out.println(strNew);
}
运行结果如下:
三:扩展(正则表达式)
正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多情况下,通常被用来,检索和替换符合某个规则的文本。
PS:有兴趣可以深入研究一下正则表达式的语法,及规则。
⑨ JAVA 如何string替换指定字符
JAVA String替换指定字符有两个方法:
//返回一个新的字符串,它是通过用newChar替换此字符串中出现的所有oldChar而生成的
publicStringreplace(charoldChar,charnewChar)
//示例
Stringstr="HelloWorld";
System.out.println(str.replace('H','W'));//输出WelloWorld
//使用给定的replacement字符串替换此字符串匹配给定的正则表达式的每个子字符串。
publicStringreplaceAll(Stringregex,Stringreplacement)
示例:
Stringstr="HelloWorld";
System.out.println(str.replaceAll('l','w'));//输出HewwoWorwd