Java 字符串用“.”分割(点)[重复]

2024-02-21

为什么这段代码的第二行会抛出ArrayIndexOutOfBoundsException?

String filename = "D:/some folder/001.docx";
String extensionRemoved = filename.split(".")[0];

虽然这有效:

String driveLetter = filename.split("/")[0];

我使用Java 7。


如果你想分割一个点,你需要转义点literal dot:

String extensionRemoved = filename.split("\\.")[0];

否则你会在正则表达式上分裂.,这意味着“任何字符”。
请注意在正则表达式中创建单个反斜杠所需的双反斜杠。


你会得到一个ArrayIndexOutOfBoundsException因为你的输入字符串只是一个点,即".",这是一种边缘情况,当按点分割时会产生一个空数组;split(regex) https://docs.oracle.com/javase/8/docs/api/java/lang/String.html#split-java.lang.String-从结果中删除所有尾随空白,但由于在一个点上拆分一个点只留下两个空白,因此删除尾随空白后,您将留下一个空数组。

为了避免得到ArrayIndexOutOfBoundsException对于这种边缘情况,请使用重载版本split(regex, limit) https://docs.oracle.com/javase/8/docs/api/java/lang/String.html#split-java.lang.String-int-,它有第二个参数,即结果数组的大小限制。什么时候limit is negative,从结果数组中删除尾随空白的行为被禁用:

".".split("\\.", -1) // returns an array of two blanks, ie ["", ""]

即,当filename只是一个点".", 呼叫filename.split("\\.", -1)[0]将返回空白,但调用filename.split("\\.")[0]会抛出一个ArrayIndexOutOfBoundsException.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java 字符串用“.”分割(点)[重复] 的相关文章

  • 获取Android库中的上下文

    我正在编写一个 Android 应用程序 它的一些功能封装在内部库中 但是 要使此功能发挥作用 库需要一个应用程序上下文的实例 为图书馆提供这种上下文的最佳方式是什么 我看到了一些选择 但没有一个有吸引力 Have my library c
  • Selenium 和 TestNG 同时使用“dependsOn”和“priority =”问题

    我正在努力在 GUI 自动化测试中实现更好的工作流程控制 我首先从dependsOn开始 但很快发现缺点是如果一个测试失败 则套件的整个其余部分都不会运行 所以我改用 priority 但看到了意外的行为 一个例子 Test priorit
  • 使用全局变量从内部函数获取空字符串

    请帮助我解决一些小问题 我确信你能做到 D 我试图在 firestore 文档 user cases information 上设置一个字段 其中包含一个字段 case number 首先我声明这个全局变量 private String c
  • Java Junit 测试 HTTP POST 请求

    我需要测试以下方法而不改变方法本身 该方法向服务器发出 POST 方法 但我需要制作一个独立于服务器的测试用例 在将其重定向到本地文件之前 我测试了类似的方法 但为此我将协议指定为文件 主机名指定为 localhost 端口指定为 1 我的
  • 使用 kryo 注册课程的策略

    我最近发现了 kryonet 库 它非常棒并且非常适合我的需求 然而 我遇到的一个问题是制定一种好的策略来注册所有可以转移的类 我知道我可以在每个对象中编写一个静态方法 该方法将返回它使用的所有类的列表 但我真的不想这样做 为了我自己的时间
  • 如何避免Eclipse在将类名放在注释中时导入类,以便checkstyle稍后不会抱怨?

    有时我将类名放在方法或类的注释中只是为了引用 但是 Eclipse 会自动执行导入并在文件中留下导入语句 这会导致稍后出现 未使用的导入 检查样式错误 当我在注释中输入类名时 是否可以更改一些配置以避免 Eclipse 自动导入 人们不同意
  • 将 NSAttributedString 的子字符串替换为另一个 NSAttributedString

    我想替换一个子字符串 例如 replace of an NSAttributedString和另外一个NSAttributedString 我正在寻找一种等效的方法NSString s stringByReplacingOccurrence
  • 绘制平滑曲线

    我想创建更平滑的曲线 而不仅仅是线角 这是我现在画的图 这是我的代码 case FREEHAND float pts float ptk ptk new float 2 imageMatrix invert inv if mCurrentS
  • for循环中更新JLabel的问题

    我的程序的想法是从之前在其他 JFrame 中保存的列表中选择一个名称 我想在标签中一个接一个地打印所有名称 它们之间有很小的延迟 然后停在其中一个名称上 问题是lbl setText String 如果有多个则不起作用setText co
  • Java 中如何验证字符串的格式是否正确

    我目前正在用 Java 编写一个验证方法来检查字符串是否是要更改为日期的几种不同格式之一 我希望它接受的格式如下 MM DD YY M DD YY MM D YY 和 M D YY 我正在测试第一种格式 每次它都告诉我它无效 即使我输入了有
  • 如何在 Eclipse 中获得完全限定的类名?

    有没有一种快速方法可以在 Eclipse 中单击 Java 类并获取其完全限定名称 或将其复制到剪贴板 2016年6月29日编辑 正如 Jeff 所指出的 您只需要执行以下第二步 1 Double click on the class na
  • 如何使用 Regex.Replace 从字符串中删除数字?

    我需要使用Regex Replace从字符串中删除所有数字和符号 输入示例 123 abcd33输出示例 abcd 请尝试以下操作 var output Regex Replace input d string Empty The d标识符
  • 接口是否像对象一样对待?

    为什么下面的代码可以工作 interface I class A implements I public String toString return in a class B extends A public String toStrin
  • 如何在 spring-data 中强制使用 CrudRepository 进行预加载?

    我有一个实体 其中包含List就是这样lazy默认加载 interface MyEntityRepository extends CrudRepository
  • 检查字符串是否编码为 UTF-8

    function seems utf8 str length strlen str for i 0 i lt length i c ord str i if c lt 0x80 n 0 0bbbbbbb elseif c 0xE0 0xC0
  • 从字节数组设置 img src

    我需要设置img src我在对象中拥有的字节数组的属性 img
  • 为什么不能在 if 语句中声明变量?

    以下 Java 代码无法编译 int a 0 if a 1 int b 0 if a 1 b 1 为什么 不能有任何代码路径导致程序将 1 分配给b无需先声明 我突然想到b的变量范围可能仅限于第一个if声明 但后来我不明白为什么 如果我实在
  • 在java中执行匿名pl/sql块并获取结果集

    我想执行匿名 PL SQL 并需要获取结果集对象 我得到了可以通过在 PL SQL 块内使用游标来完成的代码 但 PL SQL 块本身将以文本形式来自数据库 所以我无法编辑该 PL SQL 块 并且它只会返回两个值 其列名始终相同 它将返回
  • Firebase:用户注册后如何进行电话号码验证?

    所以我知道我可以使用电子邮件验证或电话号码验证 但我想做的是在用户注册或登录后进行电话号码验证 如何连接这两种身份验证方法 最后 Firebase中是否有一个函数可以检查用户是否通过电话号码验证 谢谢 即使用户已通过身份验证 您仍然可以使用
  • java Web应用程序中的日期转换

    String date1 13 03 2014 16 56 46 AEDT SimpleDateFormat sdf new SimpleDateFormat dd MM yyyy HH mm ss z sdf setTimeZone Ti

随机推荐

  • 尝试将隐藏的输入值发送到下一页

    我正在尝试根据客户的需求调整 Wordpress Jigoshop 但遇到了一些困难 我需要的是 当选择产品变体时 一些附加选项以单选按钮的形式出现 客户必须选择 我已经设法让一切正常工作 但我现在需要的是在单击提交按钮时将选定的单选按钮发
  • 是否可以对最小化的应用程序进行屏幕截图

    我知道可以捕获另一个应用程序后面的应用程序的屏幕 但我似乎找不到任何有关捕获最小化应用程序屏幕的信息 有人知道这是否可能吗 我不想很快就涉及最大化和最小化应用程序之类的事情 正如 ziplin 所说 对于较新版本的 Windows 这可能是
  • iPhone/iOS 中 viewDidAppear 和 viewDidLoad 之间的区别? [复制]

    这个问题在这里已经有答案了 最重要的是 我一直在开发一个应用程序 似乎如果我放置一个UIAlert in viewDidLoad 它被调用两次 从委托方法UIImagePickerController 如果我把它放进去viewDidAppe
  • python 中的导入是否被视为动态链接?

    用 posix 和通用技术软件开发的话说 是否有import一个纯粹的python 不是cython或c编译的库 模块构成动态链接 不 加载纯 Python 模块不被视为动态链接的一种形式 传统的动态链接将机器代码加载到新的内存块中 并且可
  • 如何将更改的文件添加到 Git 中较旧的(不是最后一次)提交

    在过去的一个小时里 我改变了几件事 并一步步提交它们 但我刚刚意识到我忘记在一些提交之前添加更改的文件 日志看起来像这样 GIT TidyUpRequests u 1 d 0 gt git log commit fc6734b6351f6c
  • 抽象类型集合的获取策略

    所以情况是这样的 假设我有一个用于表示灵活搜索的类结构 public class SearchDefinition public virtual string Name get set public virtual IEnumerable
  • 活动目录属性

    在 stackoverflow 上两个人的帮助下 我已经弄清楚如何使用下面的代码设置 用户无法更改密码 我现在正在想办法如何删除该财产 我认为将拒绝标志设置为 允许 会起作用 但它似乎没有任何作用 如果可能的话 我希望代码使用 Direct
  • iOS:使用 playInputClick 与使用音频工具箱的 (1104) 声音文件之间是否存在性能差异?

    苹果建议使用playInputClick在自定义键盘中模拟点击声 更容易实施AudioServicesPlaySystemSound 1104 所以我的问题就变成了playInputClick提供更好的性能还是同一件事 苹果推荐这样做的原因
  • Plone 4.1.4 安装失败:lxml 构建失败:libxml2:

    预期结果 Successful installtion of Plone 4 1 4 实际结果 Installation fails with libxml2 cmmi failed Stack Ubuntu Ubuntu 10 04 4
  • 上面的注释栏:

    ggplot 中躲避的条形图再次让我难住了 几周前 我询问了有关在此处的栏上方注释文本的问题 LINK https stackoverflow com questions 9815226 annotate values above bars
  • .NET Core MVC 自动迁移后,类库在 VS2017 中丢失智能感知

    将具有两个项目 Web 应用程序和类库 的 VS2015 MVC Core 应用程序迁移到 VS2017 后 我失去了类库中所有视图的智能感知 几乎每个视图中的所有内容都被破坏了 所以我确信迁移工具没有为我处理这是相当基本的事情 即便是 m
  • 如何检查指针是否指向正确对齐的内存位置?

    Given a void 对于某些存储 如何检查它是否指向正确对齐的存储而没有任何实现定义的行为 当然我们有std align http en cppreference com w cpp memory align 但是有更有效的方法吗 t
  • 如何将 OAuth 2 令牌映射到资源服务器中的 UserDetails 对象?

    我有 2 个独立的 Spring Boot 应用程序 一个用作 OAuth 2 授权服务器 另一个用作资源服务器 我正在使用Spring的RemoteTokenServices在我的资源服务器中检查来自授权服务器的令牌 现在 我尝试在资源服
  • 如何在双y轴ggplot上显示图例

    我正在尝试使用 ggplot 绘制双 y 轴图表 首先我要说的是 我并不是在寻找关于这样做是否是良好做法的优点的讨论 我发现它们在查看基于时间的数据来识别两个离散变量的趋势时特别有用 我认为对此进行进一步讨论更适合交叉验证 Kohske h
  • 部署 DacPac 时如何将多个 SQLCMD 变量与 SqlPackage.exe 一起使用?

    我正在使用 sqlpackage exe 部署 dacpac 并且需要为 dacpac 中的部署后脚本传递 SqlCMD 变量 我发现了一个相关问题here https stackoverflow com questions 1550265
  • JAR 插件实现

    让我们有一个 Groovy Java 应用程序 它应该使用一组在外部定义的类 jar files 假设它们位于主可执行 jar 附近 所以 主类 让我们称之为Main 应该加载plugin jar在运行时创建文件并调用该 jar 中定义的类
  • PyDev 在 Eclipse 中导入

    我刚刚在 Ubuntu 10 04 LTS 中安装了 Eclipse Indigo 并使用它安装了 Pydev 我做了以下事情 1 通过在 Window gt Preferences gt PyDev gt Editor gt Interp
  • 致命错误:使用 mongodb php 驱动程序 1.1.2 和 PHP 7.0.2 时未找到“MongoDate”类 - Laravel 5.1

    我正在尝试将 MongoDB 配置为与虚拟 Ubuntu 14 04 计算机上的 Laravel 5 1 Homestead 实例配合使用 我能够使用以下命令成功安装支持 PHP 7 0 的最新版本 MongoDBsudo pecl ins
  • 错误:包 javax.servlet 不存在

    我试图按照以下指南在我的 Web 应用程序中使用 jsf 2 实现登录过滤器 https stackoverflow com tags servlet filters info https stackoverflow com tags se
  • Java 字符串用“.”分割(点)[重复]

    这个问题在这里已经有答案了 为什么这段代码的第二行会抛出ArrayIndexOutOfBoundsException String filename D some folder 001 docx String extensionRemove