如何修剪字符串中的空格? [复制]

2023-12-11

我正在为 J2ME 应用程序编写此函数,因此我没有一些可用的更高级/现代的 Java 类。我正进入(状态java.lang.ArrayIndexOutOfBoundsException关于这一点。所以,显然它不喜欢我初始化的方式newChars数组,或者我在调用时没有正确执行某些操作System.arraycopy.

/*
 * remove any leading and trailing spaces
 */
public static String trim(String str) {
    char[] chars = str.toCharArray();
    int len = chars.length;
    // leading
    while ( (len > 0 ) && ( chars[0] == ' ' ) ) {
        char[] newChars = new char[] {}; // initialize empty array
        System.arraycopy(chars, 1, newChars, 0, len - 1);
        chars = newChars;
        len = chars.length;
    }
    // TODO: trailing
    return chars.toString();
}

The simple way to trim leading and trailing whitespace is to call String.trim(). With Java 11 and later, you can also use String.strip() which uses a different interpretation of what "white space" means1.

如果您只想修剪前导和尾随空格(而不是所有前导和尾随空格),有一个 Apache commons 方法称为StringUtils.strip(String, String)可以做到这一点;调用它" "作为第二个参数。

您尝试的代码有许多错误,并且从根本上来说效率很低。如果您真的想自己实现这一点,那么您应该:

  1. 计算前导空格字符
  2. 计算尾随空格字符
  3. 如果任一计数不为零,则调用String.substring(from, end)创建一个包含要保留的字符的新字符串。

This approach avoids copying any characters2.


1 - The different meanings are explained in the respective javadocs. Alternatively, read the answers to Difference between String trim() and strip() methods in Java 11.

2 - Actually, that depends on the implementation of String. For some implementations there will be no copying, for others a single copy is made. But either is an improvement on your approach, which entails a minimum of 2 copies, and more if there are any characters to trim.

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

如何修剪字符串中的空格? [复制] 的相关文章

  • 更改 Ubuntu Linux 中文件夹的读/写访问权限

    我想创建一个文件夹并在创建的文件夹中写入一个文件Amazon EBS来自安装在运行 Ubuntu 的 Amazon EC2 上的 Java Servlet 的卷 我已将 EBS 卷安装在 mnt my address 但是Servlet无法
  • 如何使用 Jsoup 获取包含非 ASCII 字符(ą、ś ...)的 URL?

    我正在使用 jsoup 解析一些波兰网站 但我对 URL 中的 等特殊字符有问题example com k t读起来像example com k 每个没有这个特殊字符的查询都可以完美运行 我努力了Document doc Jsoup par
  • 在 Java 中将字符串复制到文件的开头

    我想将一个字符串写入文件的开头 我该怎么做 我根本不知道如何添加字符串 这就是我到目前为止所做的 public static void prepend String filename String data throws IOExcepti
  • 如何增加使用 SAX 解析 XML 文件的entityExpansionLimit

    我正在尝试使用 Java 中的 SAX 解析器解析一个 1 23 GB 的 XML 文件 我使用的是 Mac 操作系统和 JDK 1 7 0 51 不幸的是 我收到以下错误 The pasrser has encountered more
  • 如何用 Java 制作 Windows 7 工具提示

    我一直在网上到处寻找 但没有找到这个小问题的答案 在 Windows 7 中 我认为在 Vista 中 您有一个漂亮的圆形银色工具提示 它看起来比旧的黄色盒装蹩脚工具提示要好得多 下面的 How do I make a Windows 7
  • Java TCP Echo 服务器 - 广播

    我有一个简单的回显服务器 我希望当连接的用户向服务器键入任何内容时 所有其他客户端和该客户端都会收到消息 MOD 它现在不会发送给所有客户端 但它应该发送 而且我只是不知道我的代码出了什么问题 所以现在它只会将消息 MOD 发送给发送消息的
  • Runtime.getRuntime().exec(cmd) 挂起

    我正在执行一个命令 该命令返回文件的修订号 文件名 但如果执行命令时出现问题 应用程序就会挂起 我可以做什么来避免这种情况 请在下面找到我的代码 String cmd cmd C si viewhistory fields revision
  • 如何在 WebSphere Liberty Batch 中配置事务超时?

    的作用是什么javax transaction global timeout 我是否需要实施检查点 超时 中的方法检查点算法 服务器配置级别有什么东西吗 它如何与应用程序级别的设置进行交互 2016年12月2日编辑 重新设计并解释了为应用程
  • Jetty 提供静态内容所需的最少文件集?

    背景 免责声明 I have veryJava 经验很少 我们之前在 Ant 构建期间使用了 Jetty 6 的包装版本来处理按需静态内容 JS CSS 图像 HTML 因此我们可以使用 PhantomJS 针对 HTTP 托管环境运行单元
  • toArray 与预先确定大小的数组

    使用时ar toArray new String ar size 安卓工作室3 2 1警告预先确定大小的数组并建议空数组 有两种方式将集合转换为数组 使用 预先确定大小的数组 如 c toArray new String c size 或使
  • CompletableFuture SupplyAsync

    我刚刚开始探索 Java 8 的一些并发特性 让我有点困惑的一件事是这两个静态方法 CompletableFuture
  • Apache Camel - 路由中的事务

    我有一个关于 Apache Camel 的一般性问题 我无法找到聚合器是否已进行交易 如果是交易 交易是如何实现的 聚合的速度有多快 将消息发送到聚合器可以在事务中运行 您需要一个带有聚合器的持久存储来让传出消息充当事务 请参阅有关持久性的
  • 为什么我在 Java 中收到有关“可能丢失精度”的警告?

    class Test public static void main String args short s 2 s1 200 s2 s2 s s1 error possible loss of precision System out p
  • Thread.interrupt() 和 Thread.interrupted() 到底是如何工作的? [复制]

    这个问题在这里已经有答案了 从设置线程状态的角度来看 我不清楚这两种方法 Java 文档说 Thread interrupt 设置线程中断状态标志 调用 Thread interrupted 方法给出线程的状态并清除该标志 当这在实际场景中
  • 使用会话空闲超时进行轮询

    我对 Tomcat 中的所有应用程序使用单点登录 我的要求是 我必须轮询应从后端获取的事务状态 但它也不应该影响会话的空闲超时 有人可以建议是否可以做点什么吗 Thanx 我不知道是否有标准方法可以做到这一点 如果没有 你可以写一个过滤器
  • 在服务器上创建 Zip 文件并使用 java 下载该 zip

    我从 mkyong 获得了以下代码 用于在本地压缩文件 但是 我的要求是在服务器上压缩文件并需要下载它 任何人都可以帮忙吗 代码写入zip文件 public void zipFiles File contentFile File navFi
  • 让 subclipse 在 Ubuntu 64 和 Indigo 上工作 - 加载了不兼容的 JavaHL 库。需要 1.7.x 或更高版本

    我该如何解决 我在 ubuntu 64 上使用 Eclipse indigo 我安装了http subclipse tigris org update 1 8 x http subclipse tigris org update 1 8 x
  • Java Media API:java media api 下载

    我在哪里可以找到javax media jar 文件 在sun站点它下载一个安装程序 有没有可用的java媒体jar 没有 javax media 具体是 jar 文件 该包位于 jmf jar 文件中 您需要运行安装程序并取出 jar 或
  • 在地图中的图块上实现鼠标单击事件

    我正在尝试在 JPanel 上实现图像 基本上是地图上的图块 的鼠标单击事件 我只是不知道该怎么做 我有一个扩展 JPanel 的 Main 类 我正在从图块服务器检索图块 并根据特定的缩放级别在 Main 类的 PaintComponen
  • Cassandra 会话与集群 有什么可分享的?

    考虑 Cassandra 的 Session 和 Cluster 类 Java 驱动程序 我想知道有什么区别 在 Hibernate 中 每次都会创建一个会话并共享会话工厂 从许多来源我了解到 它被认为是创建一个会话并在多个线程之间共享它

随机推荐

  • ListView可以在ExpandableListView里面吗?

    我们可以在 ExpandableListView 中包含 ListView 吗 这样我就可以首先拥有组级别 然后拥有子级数组 listView 我已经完成了列表视图课程 它工作得很好 但如何调用可扩展列表视图中的每个组来显示列表视图 布局
  • 这在 PHP 中意味着什么:-> 或 =>

    我一直在 PHP 中看到这些 但我不知道它们的实际含义 什么是 gt 做什么以及做什么 gt 做 我不是在谈论运营商 它们是别的东西 但似乎没有人知道 The 双箭头运算符 gt 用作数组的访问机制 这意味着在数组上下文中 其左侧的值将具有
  • R:将XML数据转换为数据框

    对于家庭作业 我试图将 XML 文件转换为 R 中的数据框架 我尝试了许多不同的方法 并且在互联网上搜索了一些想法 但没有成功 到目前为止 这是我的代码 library XML url lt http www ggobi org book
  • 通知等待模式的C++多线程算法设计

    我正在寻找以下算法在 Windows 上的多线程实现的建议和代码示例 主题1 采取input1 做工作 通知Thread2 继续工作 主题2 采取input2 做工作 等待来自thread2的通知 做一些处理 通知Thread3 继续工作
  • WKWebView:是否可以预加载多个URL?

    刚刚将应用程序迁移到WKWebView想知道是否有任何可能的方法来 预加载 多个 URL 但一次只显示一个 我有 5 个 URL 的列表 我已经知道我会在某个时间点显示 并且我想通过预加载这些内容以在单个时间点中使用来加快体验速度WKWeb
  • Scala Futures:每个新创建或映射的异常的默认错误处理程序

    是否有可能始终使用默认的 onFailure 处理程序创建 Future 块 例如将堆栈跟踪写入控制台 该处理程序还应该自动附加到映射的 future 通过在已经具有默认故障处理程序的 future 上调用映射创建的新 future 另请参
  • 为什么我不能使用 Start-Process 来调用带参数的脚本?

    我正在尝试在 Powershell 中编写一个包装器脚本 该脚本传递可执行文件的名称 进行一些预处理 然后使用该预处理产生的参数调用该可执行文件 我希望可执行文件是可以在 Windows 上运行 打开的任何内容 所以我想使用Start Pr
  • 自引用多对多递归关系代码优先实体框架

    我似乎根本无法完成这项工作 class Member public virtual IList
  • 使用jQuery在IE10中动态提交文件上传表单

    我有一个表单 其唯一目的是上传文件 但出于用户体验的原因 我需要一个漂亮的按钮 加载文件对话框 选择文件后自动提交表单 原来的解决方案是这样的这个 JSFiddle 其中有一个加载文件对话框的链接 然后监听该对话框的change自动提交表单
  • 将 SDL 嵌入 GTK+

    我有一个使用 GTK 来显示一些漂亮的 GUI 的应用程序 但我使用 SDL 在 GTK 内显示一个小的 RGB 帧缓冲区 我使用以下代码将 SDL 引入 GTK char SDL windowhack 32 sprintf SDL win
  • Android使用路径中的空间和通用图像加载器加载本地图像

    我正在开发 Android 应用程序 我想在通用图像加载器的帮助下显示本地图像 但是 当我尝试显示本地图像路径中有空间的图像时 它无法显示图像 我按照以下方式尝试过 Uri fromFile new File newImagePath to
  • OWL:如何从超类中继承两个类之间的属性关系?

    假设我们有两个名为People and Disease 这些类通过对象属性相关has People has Disease People有子类 或个人 John and Disease有子类 或个人 Cancer John a People
  • 如何在Android中应用多个查询来过滤firebase数据结果?

    我想在回收者视图中显示城市 瓦拉纳西 性别 男 且工资在 5000 到 15000 之间的所有工人姓名 在这种情况下 必须显示所显示的工作人员的姓名 必须应用什么查询以及如何实现 首先 我认为你需要用双值保存工资 而不是字符串 您需要在工作
  • 用字符串+整数组成变量名并调用函数

    首先 我对这些很陌生 这个问题可能很愚蠢 无论如何 我有一个这样的程序 procedure Tform1 QueryChange sqltext String query Integer begin if query 1 then begi
  • 如何在 CQL 3 准备好的语句中绑定 IN 子句值?

    我有一张大致类似于 create table mytable id uuid something text primary key id 我正在尝试创建一个具有绑定子句的准备好的语句 PreparedStatement ps session
  • 如何使用 TCPDF 制作包含 2D 条形码的 2x6 标签,而不使用列或第 3 方类?

    三周以来 我想我就是这么慢 我尝试使用 TCPDF 自己的示例以及在该网站上找到的一些建议来弄清楚如何使用数据库记录来做到这一点 当其他人询问如何使用第 3 方补丁 类 来使事情顺利进行时 Asuni 先生回应了一些帮助请求 只是它可以在没
  • 如何在rails中使用jsonb

    我有一个以 Postgresql 9 4 作为后端的 Rails 项目 我有这样的专栏 t json slot details null false default 如何将其从 JSON 更改为 JSONB 我应该添加索引并将其更改为 JS
  • 如何使用 mysql udf json_extract 0.4.0 从 json 数组中提取行?

    我有一些 sql 想要传递到 mysql 存储过程中 我正在使用 mysql json udfs 0 4 0 labs json udfs linux glibc2 5 x86 64 中的 json 函数 我们正在运行 mysql 5 5
  • 对空数组使用 $push

    我有一个 mongo 文档 其中包含名为 events 的数组字段 该字段有时可能为空 我在用着 push将元素添加到 事件 数组中 问题是 当 events 字段为空时它无法工作 例如 如果在数据库中它看起来像这样 id ObjectId
  • 如何修剪字符串中的空格? [复制]

    这个问题在这里已经有答案了 我正在为 J2ME 应用程序编写此函数 因此我没有一些可用的更高级 现代的 Java 类 我正进入 状态java lang ArrayIndexOutOfBoundsException关于这一点 所以 显然它不喜