如何在方法中得到调用者的对象

时间:2021-02-27 17:47:17

public class Question {
public static void main(String[] args) {
String str = "abc";
//str.replaceAll("", "/") 的结果是 /a/b/c/
//我需要的是a/b/c
//不想为这个临时字符串起名字
//如
//tmpstr = str.replaceAll("","/");
//System.out.println(tmpstr.substring(1,tmpstr.length()));

//也不想做2遍替换
//如
// System.out.println(str.replaceAll("", "/").substring(1,str.replaceAll("", "/").length()-1));

//我想用一行java语句完成从abc 到 a/b/c的过程
System.out.println(str.replaceAll("", "/").substring(1, 【这里填什么】.length()-1));

}
}


其实也就是在一个方法中如何获取调用此方法的对象
当然在本类中, 可以用this获取,在其他类的语句中如何获取呢?

菜鸟提问,谢谢你的回答和管制。

12 个解决方案

#1


这个问题,是无解的。因为你问的要填写的那个地方的对象其实就是str.replaceAll("", "/")的结果,而你这儿的没有将这个对象给一个引用,而要去访问一个对象时要通过引用去的。这就好比一个人去问一个无名氏叫什么名字。

另外,估计你没有去验证,这里的this是不行的。
你做2遍的那种方法,可以得到正确的结果,但是你要知道,那两个str.replaceAll("", "/")并不是指的一个对象哦

#2


str=str.replaceAll("", "/");
str=str.substring(1, str.length()-1;

#3


  System.out.println(str.replaceAll("", "/").substring(1));
就你的程序,这个可以满足要求

#4


str=str.replaceAll("", "/");
str=str.substring(1, str.length()-1;
同意二楼!  lz真是神人呀,实际开发中,不会用到你说的这种方法的。

#5


   System.out.println(str.replaceAll("\B", "/"));

#6


少打个斜杠...没转义

 System.out.println(str.replaceAll("\\B", "/"));

#7


引用 6 楼 zqfddqr 的回复:
少打个斜杠...没转义

 System.out.println(str.replaceAll("\\B", "/"));


大神可以解释下吗?不理解啊,谢谢

#8


str=str.replaceAll("", "/");
System.out.println(str.substring(1, str.length()-1));
为什么不能这样写str.replaceAll("", "/").substring(1, str.length()-1)的原因, 你得去了解一下String 在内存的存储

#9


哇,csdn的朋友真热心, 我昨天也和同学讨论了一下这个问题, 要是不想得起名字的话, 就更复杂了。

另外请问,有没有把 abc 变成 a/b/c 的更简单的方法?

明天就可以结贴了。

#10


引用 7 楼 ljc19901124 的回复:
引用 6 楼 zqfddqr 的回复:少打个斜杠...没转义

 System.out.println(str.replaceAll("\\B", "/"));

大神可以解释下吗?不理解啊,谢谢
/B 匹配非首末的位置 正好适用这个 具体你可以百度一下

#11


引用 6 楼 zqfddqr 的回复:
少打个斜杠...没转义

 System.out.println(str.replaceAll("\\B", "/"));


+10086

#12


str.replaceAll("", "/").substring(1, str.length()-1)只是得到了另外一个String(a/b/c)对象的引用

#1


这个问题,是无解的。因为你问的要填写的那个地方的对象其实就是str.replaceAll("", "/")的结果,而你这儿的没有将这个对象给一个引用,而要去访问一个对象时要通过引用去的。这就好比一个人去问一个无名氏叫什么名字。

另外,估计你没有去验证,这里的this是不行的。
你做2遍的那种方法,可以得到正确的结果,但是你要知道,那两个str.replaceAll("", "/")并不是指的一个对象哦

#2


str=str.replaceAll("", "/");
str=str.substring(1, str.length()-1;

#3


  System.out.println(str.replaceAll("", "/").substring(1));
就你的程序,这个可以满足要求

#4


str=str.replaceAll("", "/");
str=str.substring(1, str.length()-1;
同意二楼!  lz真是神人呀,实际开发中,不会用到你说的这种方法的。

#5


   System.out.println(str.replaceAll("\B", "/"));

#6


少打个斜杠...没转义

 System.out.println(str.replaceAll("\\B", "/"));

#7


引用 6 楼 zqfddqr 的回复:
少打个斜杠...没转义

 System.out.println(str.replaceAll("\\B", "/"));


大神可以解释下吗?不理解啊,谢谢

#8


str=str.replaceAll("", "/");
System.out.println(str.substring(1, str.length()-1));
为什么不能这样写str.replaceAll("", "/").substring(1, str.length()-1)的原因, 你得去了解一下String 在内存的存储

#9


哇,csdn的朋友真热心, 我昨天也和同学讨论了一下这个问题, 要是不想得起名字的话, 就更复杂了。

另外请问,有没有把 abc 变成 a/b/c 的更简单的方法?

明天就可以结贴了。

#10


引用 7 楼 ljc19901124 的回复:
引用 6 楼 zqfddqr 的回复:少打个斜杠...没转义

 System.out.println(str.replaceAll("\\B", "/"));

大神可以解释下吗?不理解啊,谢谢
/B 匹配非首末的位置 正好适用这个 具体你可以百度一下

#11


引用 6 楼 zqfddqr 的回复:
少打个斜杠...没转义

 System.out.println(str.replaceAll("\\B", "/"));


+10086

#12


str.replaceAll("", "/").substring(1, str.length()-1)只是得到了另外一个String(a/b/c)对象的引用