将一个路径进行标准化的解析, 防止路径中连续出现多个‘/’,以及防止路径中出现'\', 防止路径结尾出现 '/'

由于不同系统,路径的信息表示不同,但是最后的处理却是使用同一格式的,

比如:输入的路径为:D:\\kassdev\\app-kaace\\classes\\com\\kass\\commons\\utils,

需要输出的路径信息为:D:/kassdev/app-kaace/classes/com/kass/commons/utils

以下的代码,对这种情况进行了处理

public static String parsePath(final String path){
  if(path==null || path.length()==0)
    return "";
  if(path.indexOf("\\")>=0){
    String path2 = path.replaceAll("\\\\", "/");
    while(path2.indexOf("//")>=0){
      path2 = path2.replaceAll("//", "/");
    }
    if(path2.endsWith("/") && !path2.equals("/")){
      path2 = path2.substring(0, path2.length()-1);
    }
    return path2;
  }else{
    if(path.indexOf("//")>=0){
      String path2 = path.replaceAll("//", "/");
      while(path2.indexOf("//")>=0){
        path2 = path2.replaceAll("//", "/");
      }
      if(path2.endsWith("/") && !path2.equals("/")){
        path2 = path2.substring(0, path2.length()-1);
      }
      return path2;
    }else{
      if(path.endsWith("/") && !path.equals("/")){
        String path2 = path.substring(0, path.length()-1);
        return path2;
      }else{
        return path;
      }
    }
  }
}

将一个路径进行标准化的解析, 防止路径中连续出现多个‘/’,以及防止路径中出现'\', 防止路径结尾出现 '/'

时间: 2024-10-14 08:44:35

将一个路径进行标准化的解析, 防止路径中连续出现多个‘/’,以及防止路径中出现'\', 防止路径结尾出现 '/'的相关文章

_DataStructure_C_Impl:求图G中从顶点u到顶点v的一条简单路径

#pragma once #include<stdio.h> #include<stdlib.h> #define StackSize 100 typedef int DataType; //栈元素类型定义 typedef struct{ DataType stack[StackSize]; int top; }SeqStack; //将栈初始化为空栈只需要把栈顶指针top置为 void InitStack(SeqStack *S){ S->top=0;//把栈顶指针置为0

实战c++中的string系列--string的替换、查找(一些与路径相关的操作)

今天继续写一些string操作. string给我们提供了很多的方法,但是每在使用的时候,就要费些周折. 场景1: 得到一个std::string full_path = "D:\program files\csdn",但是我想得到"D:\program files\vagaa"这个路径. 这就需要字符串的替换 std::string full_path = "D:\\program files\\csdn" const size_t last_

解析OBJ模型并将其加载到Unity3D场景中

??各位朋友,大家好,欢迎大家关注我的博客,我是秦元培,我的博客地址是http://qinyuanpei.com.今天想和大家交流的是解析obj模型并将其加载到Unity3D场景中,虽然我们知道Unity3D是可以直接导入OBJ模型的,可是有时候我们并不能保证我们目标客户知道如何使用Unity3D的这套制作流程,可能对方最终提供给我们的就是一个模型文件而已,所以这个在这里做这个尝试想想还是蛮有趣的呢,既然如此,我们就选择在所有3D模型格式中最为简单的OBJ模型来一起探讨这个问题吧! 关于OBJ模

无法解析的外部符号 [email&#160;protected],该符号在函数 ___tmainCRTStartup 中被引用

一,问题描述MSVCRTD.lib(crtexew.obj) : error LNK2019: 无法解析的外部符号 [email protected],该符号在函数 ___tmainCRTStartup 中被引用 Debug\jk.exe : fatal error LNK1120: 1 个无法解析的外部命令 error LNK2001: unresolved external symbol [email protected]在自己创建新工程的时候经常在开始选择win32控制台程序还是win32

error LNK2019: 无法解析的外部符号 [email&#160;protected],该符号在函数 _wmain 中被引用

1>sockett.obj : error LNK2019: 无法解析的外部符号 [email protected],该符号在函数 _wmain 中被引用 解决方法: 没有加入相应的链接库,winmm.lib.在头文件添加 #pragma comment(lib,"ws2_32.lib") ws2_32.lib文件,提供了对以下网络相关API的支持,若使用其中的API,则应该将ws2_32.lib加入工程(否则需要动态载入ws2_32.dll).有时无法直接对头文件进行修改.在引

c语言:将一个二维数组行和列的元素互换,存到另一个二维数组中。

将一个二维数组行和列的元素互换,存到另一个二维数组中. 解:程序: #include<stdio.h> int main() { int i, j, a[2][3] = { {1,2,3},{4,5,6} },b[3][2]; printf("array a:\n"); for (i = 0; i <=1; i++)//处理a数组中的一行中各元素 { for (j = 0; j <= 2; j++)//处理a数组中的某一列元素 { printf("%5

sql将一个表中的数据插入到另一个表中

列名不一定要相同,只要你在HH中列出要插入列的列表跟select   from   mm表中的选择的列的列表一一对应就可以了,当然两边的数据类型应该是兼容的. 比如: insert   into   hh   (fielda,fieldb,fieldc)   select   fieldx,fieldy,fieldz   from   mm ---更新计量点中不存在的数据,将台帐中的信息转移到计量点中 insert into MetricPoints (MeterID,MetricPointNa

《将一个磁盘文件中的信息复制到另一个磁盘文件中(怎样向文件读写字符)》

注意:程序中的feof(in)是检查in所指向的文件是否结束.如果是,则函数值为1(真),否则为0(假), 也就是“!feof(in)为真”,在while循环中检查"!feof(in)"为真,就执行循环体. //将一个磁盘文件中的信息复制到另一个磁盘文件中去,要求将上例建立的f:\\FILE_1\\file.txt文件中的//内容复制到另一个磁盘文件f:\\FILE_1\\file_1.txt文件中.#include<stdio.h>#include<stdlib.h

VS2015+OpenGL4.0开发编译时弹出错误:glaux.lib(tk.obj) : error LNK2019: 无法解析的外部符号 _sscanf,该符号在函数 [email&#160;protected] 中被引用

一.问题描述: VS2015+OpenGL4.0开发编译时弹出如下所示的错误: 1>glaux.lib(tk.obj) : error LNK2019: 无法解析的外部符号 _sscanf,该符号在函数 [email protected] 中被引用 1>glaux.lib(tk.obj) : error LNK2019: 无法解析的外部符号 _vsprintf,该符号在函数 _PrintMessage 中被引用 二.问题原因: VS2015默认编译时将许多标准库采用内联方式处理,因而没有可以链