【问题标题】:Cut String after second slash from left在左起第二个斜线后剪切字符串
【发布时间】:2016-11-22 00:42:30
【问题描述】:

我想在 Eclipse 中编写一个插件。现在我从一个选定的项目中得到一个带有路径的字符串:

C:/Users/mbauer/abcde/efghj/klmno...

现在我想在子字符串中剪切字符串,如下所示:

C:/Users/mbauer/

字符串应该在左起第三个斜线之后被切断。路径对于其他用户来说应该是动态的..

我试过了:

String getPath = getSelectedProjectPath(dialog);
System.out.println(getPath.substring(0, 15));

但是对于 IndexOf 0 和 15,路径不再是动态的,如果使用更长名称的用户尝试插件!

【问题讨论】:

    标签: java string path cut slash


    【解决方案1】:

    正如另一个答案中所建议的,您可以使用 java.nio.file 包中的 PathPaths

    这是另一种使用方式:

    Path path = Paths.get("C:/Users/mbauer/abcde/efghj/klmno");
    
    System.out.println(path.subpath(0, 3).toAbsolutePath());
    

    【讨论】:

      【解决方案2】:

      例如,您可以使用 indexOf() 来搜索某些字符的索引。换句话说:您确实想对如何在字符串中进行搜索进行一些事先研究;以及如何可能操纵它们。有很多文档可以解释这些事情。一种更高级的方法是分别使用 Java 正则表达式。 patterns.

      但请记住:并非所有 Eclipse 用户都使用 Windows。您可能有很多人使用 Mac 或 Linux;因此,您目前的方法很快就会对您产生影响。因此,不要进行低级字符串操作;您应该熟悉 Java Paths 等概念,以便了解您应该使用哪些抽象来创建合理的插件。

      所以,说真的:这种字符串搜索/操作是绝对基本的东西。而创建 Eclipse 插件确实是一个高级主题。含义:你是初学者;所以最好退后一步,简单地学习更多关于 Java 语言的知识;在开始编写 eclipse 插件之前。因为机会是:根据您目前的知识,您将创建一个没有人愿意使用的糟糕插件。

      【讨论】:

      • 是的,我会记住,但这仅适用于我公司的其他员工,我们都只在 Windows 上使用 Eclipse,但感谢您的回答!祝你有美好的一天!
      • 是的,我不想编写这些插件,但那是我老板的任务,我应该编写一个插件来缩短我员工的任务.. 我在这家公司的第二年和没有人愿意编写这些插件......
      • 我明白了,但最后,它并没有太大的区别。您将有客户使用您的产品。哇,这些客户住在隔壁,他们可以直接联系你的经理。您提供优质产品的更多理由。我个人的两分钱:无论你做什么,找一些有经验的 Java 程序员在你身边审查你的工作(在你工作的时候)。尤其是当你在公司里刚入行时——你最不想要的就是你的名字出现在每个人都应该使用的产品上……但这并不奏效(足够好)。
      • 是的,我完全理解,我的老板总是支持我的工作,并审查代码 2-3 天,查看代码是否结构化并查看插件是否有效,但他说他知道使用 groovy 脚本和其他东西在包资源管理器等中右键单击来编写 Eclipse 运行配置真的很繁重。我在这里无助,没有人在我们公司编写插件,我应该.. 但感谢您的所有话鬼猫!感谢所有的帮助,没有人不努力就可以掌握任何东西!祝你有美好的一天!
      【解决方案3】:

      我认为Path.subpath 会按照您的描述进行:

      System.out.println(
          FileSystems.getDefault().getPath(getPath).subpath(0, 3));
      

      【讨论】:

      • 这是正确的方法,也许是最优雅的方法
      • 我们需要为此导入哪个类?
      • @VatsalSura java.nio.file.FileSystems.
      • 如果我认为这个答案字符串返回为“Users\mbauer\runtime-EclipseApplication”,字符串在“C:/”和第 4 个斜杠之后被剪切,它会剪切第 4 个闪存(包括)第一个……
      • @MBauer Berger's answer 怎么样?
      【解决方案4】:

      这样的正则表达式可以工作:

      public static void main(String[] args) throws Exception {
          String s1 = "C:/Users/mbauer/abcde/efghj/klmno";
          System.out.println(s1.replaceAll("((.*?/){3}).*", "$1"));
      }
      

      O/P:C:/Users/mbauer/

      【讨论】:

      • 非常感谢!这解决了我的问题!对不起我的英语不好,我正在学习编程,我来自德国! :-)
      • @MBauer - 如果您正在处理“路径”,那么您应该考虑安迪的回答.. ywc btw
      • 如果我考虑安迪的回答,路径在 'C:/' 之后和第四个斜线之后被切断......
      猜你喜欢
      • 2015-07-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-13
      • 1970-01-01
      • 2012-12-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多