在 Java 中用 %20 替换空格
在本文中,我们将学习两种用 %20 替换给定字符串的所有空格的方法。
Java中使用replaceAll()方法将空格替换为%20
在这里,我们使用Java内置方法 replaceAll()
将所有空格替换为%20字符串。
在示例中,我们创建了字符串并以该字符串作为引用执行了 ReplaceAll()
方法。
ReplaceAll() 方法的语法:
string.replaceAll(oldString,newString);
正如用户在 replaceAll()
方法的语法中看到的,它将字符串作为需要替换的第一个参数,将新字符串作为将替换第一个参数的第二个参数。
示例代码:
class Test {
public static void main(String[] args) {
// given string
String str = "Hello user!, Welcome to the Jiyik. ";
// replace spaces with %20
str = str.replaceAll(" ", "%20");
System.out.println(str);
}
}
输出:
Hello%20user!,%20Welcome%20to%20the%20Jiyik.%20%20%20
在上面的输出中,用户可以看到 replaceAll()
已经用 %20 替换了所有空格,甚至是字符串末尾的所有空格。 如果用户想要删除末尾的空格,应该使用 String 库的 trim()
方法。
str = str.trim().replaceAll(" ", "%20");
输出:
Hello%20user!,%20Welcome%20to%20the%20Jiyik.
现在,用户可以在上面的输出中观察到trim()方法已经删除了末尾的空格,这就是replaceAll()方法没有在末尾添加%20字符串的原因。
时间复杂度
上面例子的时间复杂度是O(n)
,其中n代表字符串长度。 ReplaceAll()
方法的时间复杂度为O(n)。
空间复杂度
上面显示的代码的空间复杂度是 O(1)
,因为我们没有使用任何额外的空格。
在 Java 中使用 StringBuilder 类并创建一个新字符串以将空格替换为 %20
在此方法中,我们将使用 StringBuilder()
类创建自定义长度的字符串。 用户应按照以下步骤使用多余的空格将所有空格替换为 %20 字符串。
- 创建 StringBuilder 类的对象并使用空字符串对其进行初始化。 在这里,我们创建了 resultString。
- 使用 for 循环或 while 循环遍历给定的字符串。
- 如果给定字符串中位置 i 处的字符是空格,则将 %20 附加到 resultString。 否则,将相同的字符附加到 resultString。
- 迭代完成后返回或打印 resultString。
示例代码:
class Test {
public static void main(String[] args) {
StringBuilder resultString = new StringBuilder("");
// given string
String str = "Java is One of the best Programming Language.";
// Remove spaces from the end of the string.
str = str.trim();
// iterate through string
for(int i=0;i<str.length();i++){
// if the character at position i is a string, append %20 to string builder. Otherwise, append same character,
if(str.charAt(i)==' '){
resultString.append("%20");
}else{
resultString.append(str.charAt(i));
}
}
// print the StringBuilder after appending
System.out.println(resultString);
}
}
输出:
Java%20is%20One%20of%20the%20best%20Programming%20Language.
时间复杂度
上述算法的时间复杂度为 O(n)
,其中 n 指的是迭代字符串时给定字符串的长度。
空间复杂度
上述算法的空间复杂度为 O(n)
,因为我们使用 StringBuilder()
类来创建和存储新字符串。
我们学习了两种用新子字符串替换给定字符串中的子字符串或字符的方法。 在第一部分中,我们使用了Java内置的 replaceAll()
方法,并在第二部分中创建了自定义算法。
建议使用replaceAll()
方法,因为它易于使用且只需一行代码。
相关文章
在 Java 中对一个 Switch Case 语句使用多个值
发布时间:2023/07/16 浏览次数:172 分类:Java
-
在本文中,我们将学习如何在一个 switch-case 语句中使用多个值。使用 switch-case 语句 Java 允许程序员通过使用 switch case 语句来像其他编程语言一样克服太多的 if-else 条件语句。
Java 中的线程安全延迟初始化
发布时间:2023/07/16 浏览次数:59 分类:Java
-
本文将讨论在 Java 中实现线程安全的延迟初始化。Java 中的对象初始化 延迟初始化是延迟对象创建的行为。 它还可能导致某些计算任务或首次昂贵流程的延迟。
在 Java 中显示动画 GIF
发布时间:2023/07/16 浏览次数:112 分类:Java
-
我们可以使用javax包的Swing库方法来在Java中显示动画GIF。 本文介绍用户如何在 Java 应用程序或单独的窗口中显示动画 GIF。使用 Javax.swing 库在 Java 中显示动画 GIF
Java 聚合与组合
发布时间:2023/07/16 浏览次数:67 分类:Java
-
在Java中,聚合和组合是紧密相连的两个概念。 组合是类之间的紧密关联,而聚合是弱关联。Java 中的组合 Java 中的聚合
Java 错误 Java.Security.InvalidKeyException: Illegal Key Size
发布时间:2023/07/15 浏览次数:98 分类:Java
-
本篇文章介绍包含 java.security.InvalidKeyException: Illegal key size 的 Java 代码。 然后,我们将了解其可能的原因。最后,它通过消除指定的错误来引导我们找到解决方案。
Java 错误 Java.SQL.SQLException: Access Denied for User Root@Localhost
发布时间:2023/07/15 浏览次数:72 分类:Java
-
本篇文章介绍如何解决 Java 中的 java.sql.SQLException: Access Denied for user 'root'@'localhost' 错误。修复 Java 中的 java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)
Java 异常 Java.Lang.ClassNotFoundeException: Sun.Jdbc.Odbc.JdbcOdbcDriver
发布时间:2023/07/15 浏览次数:106 分类:Java
-
本篇文章介绍了 Java 中的 java.lang.ClassNotFoundException: sun.jdbc.odbc.JdbcOdbcDriver 错误。修复 Java 中的 java.lang.ClassNotFoundException: sun.jdbc.odbc.JdbcOdbcDriver
Java 错误 Gateway Process Exited Before Sending Its Port Number
发布时间:2023/07/15 浏览次数:104 分类:Java
-
本篇文章介绍了 Java 中 Java gateway process exited before sending the driver its port number 错误 Java gateway process exited before sending the driver its port number 错误
修复 Java 中 Java.Net.BindException: Address Already in Use: Bind 错误
发布时间:2023/07/15 浏览次数:77 分类:Java
-
本篇文章介绍了 Java 中的 java.net.BindException:Address already in use: Bind 错误。修复Java 中的 java.net.BindException:Address already in use: Bind