用正则表达式匹配以空格开始,并且以空格结束的字符串

chagemyself2010 2012-08-17 05:11:31
如标题,这样的一个字符串" abc ",用replaceAll方法把abc代替成我想要的字符串,中间的字符串是可变的,不一定是abc,所以不要用" abc ".replaceAll("abc","any");还有一个要求是即中间的字符串如"a b c",也要把这个整个代替掉
...全文
4425 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
scbb 2012-08-21
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]
sorry!是我语言表达能力太差。问题已经解决!多谢!!!
[/Quote]
同学,能不能请你把解决的代码共享给大家呢?
对以后的人也能有所帮助? 谢谢。
chagemyself2010 2012-08-21
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]

第一,你从来不认真看别人回帖,我已经写了两遍让你举例把问题说清楚,现在还是不清楚。

第二,你的语言表达能力太差。

真心不想拍砖,你知道怎么表达问题么,都这么长时间了,你自己的问题都描述不清楚,我再次跟你说

你把你想要的效果说清楚,不说清楚谁费劲猜你在想什么。

对于你说的"谢谢 名字 的回答"这个字符串,将其替换为张三的程序实例如下,不过我估计你还会跟问题
Java co……
[/Quote]sorry!是我语言表达能力太差。问题已经解决!多谢!!!
chagemyself2010 2012-08-21
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 的回复:]

引用 10 楼 的回复:
sorry!是我语言表达能力太差。问题已经解决!多谢!!!

同学,能不能请你把解决的代码共享给大家呢?
对以后的人也能有所帮助? 谢谢。
[/Quote]9楼是正解啊
scbb 2012-08-20
  • 打赏
  • 举报
回复
试试看是不是你要的?


public static void main(String[] args) {
System.out.println(chagemyReplace("12213abc13214", "abc", "dd"));
System.out.println(chagemyReplace(" abc ", "abc", "dd"));
System.out.println(chagemyReplace(" a b c ", "abc", "dd"));
}

public static String chagemyReplace(String srcStr, String keyStr, String replacement) {
char[] charArray = keyStr.toCharArray();

String regex = "";
for (char temp : charArray) {
regex += "[ ]*" + temp;
}
regex += "[ ]*";
return srcStr.replaceAll(regex, replacement);
}
chagemyself2010 2012-08-20
  • 打赏
  • 举报
回复
不好意思各位,描述得不够清楚,比如" abc "我想得到的是"dd","a b c"我想得到的也是"dd"
风尘中国 2012-08-20
  • 打赏
  • 举报
回复
第一,你从来不认真看别人回帖,我已经写了两遍让你举例把问题说清楚,现在还是不清楚。

第二,你的语言表达能力太差。

真心不想拍砖,你知道怎么表达问题么,都这么长时间了,你自己的问题都描述不清楚,我再次跟你说

你把你想要的效果说清楚,不说清楚谁费劲猜你在想什么。

对于你说的"谢谢 名字 的回答"这个字符串,将其替换为张三的程序实例如下,不过我估计你还会跟问题
String test="谢谢 名字 的回答";
test=test.replaceAll("\\s+.*\\s+","张三");//名字改为 张三
System.out.println(test);





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

引用 6 楼 的回复:
不知道你想要什么样的效果 ,建议你还是 进一步说明白

" abc "想要得到"dd" "a b c"也想得到dd,那" def "是不是也想得到"dd" "e f g"是不是也想得到dd,如果这

样你直接抛弃掉原来的字符串就得了。

如果你的目的是将空格开头、空格结尾的,那么举例应该" abc " " a b c " " de f "这样的格式,如果……
[/Quote]
chagemyself2010 2012-08-20
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

试试看是不是你要的?

Java code

public static void main(String[] args) {
System.out.println(chagemyReplace("12213abc13214", "abc", "dd"));
System.out.println(chagemyReplace(" abc ", "ab……
[/Quote]谢谢你的回答,这不是我想要的,你的实现方式好复杂
chagemyself2010 2012-08-20
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]
不知道你想要什么样的效果 ,建议你还是 进一步说明白

" abc "想要得到"dd" "a b c"也想得到dd,那" def "是不是也想得到"dd" "e f g"是不是也想得到dd,如果这

样你直接抛弃掉原来的字符串就得了。

如果你的目的是将空格开头、空格结尾的,那么举例应该" abc " " a b c " " de f "这样的格式,如果这样格式的文本你都想替换为某……
[/Quote]谢谢你的热心回答,我试了下你的正则表达式,发现"谢谢 名字 的回答"这个字符串无法满足你的正则表达式,我想要的结果是" 名字 "这个子字符串已经满足正则条件,所以我想把这个了字符串替换成我想要的字符串。谢谢!
风尘中国 2012-08-20
  • 打赏
  • 举报
回复

不知道你想要什么样的效果 ,建议你还是 进一步说明白

" abc "想要得到"dd" "a b c"也想得到dd,那" def "是不是也想得到"dd" "e f g"是不是也想得到dd,如果这

样你直接抛弃掉原来的字符串就得了。

如果你的目的是将空格开头、空格结尾的,那么举例应该" abc " " a b c " " de f "这样的格式,如果这样格式的文本你都想替换为某个文本,比如dd,那给你实例代码如下


String str1=" abc ";
String str2=" a b c ";
if(str1.matches("^\\s+.*\\s+$")){//满足以空格开头以空格结尾的条件
str1="dd";//直接赋值为你想要替换字符串
System.out.println(str1);
}
if(str2.matches("^\\s+.*\\s+$")){//满足以空格开头以空格结尾的条件
str2="dd";//直接赋值为你想要替换字符串
System.out.println(str2);
}


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

不好意思各位,描述得不够清楚,比如" abc "我想得到的是"dd","a b c"我想得到的也是"dd"
[/Quote]
风尘中国 2012-08-17
  • 打赏
  • 举报
回复
你这个方法跟 System.out.println(" a b c ".trim());有什么实质性的区别么?
[Quote=引用 2 楼 的回复:]

勉强看懂你的意思, try:
Java code

System.out.println(" a b c ".replaceAll(" (.+) ","$1"));
[/Quote]
噢噢噢噢 2012-08-17
  • 打赏
  • 举报
回复
勉强看懂你的意思, try:

System.out.println(" a b c ".replaceAll(" (.+) ","$1"));
风尘中国 2012-08-17
  • 打赏
  • 举报
回复
你再具体说一下吧," abc "想要得到 "abc"么,"a b c"想要得到 "abc"么?
按照你的标题,以空格开始以空格结束,"a b c"根本不符合要求,说清楚一点吧,多举个例子

50,523

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧