Java使用base64时字符串中间包含null被编译成“”?

Python09

Java使用base64时字符串中间包含null被编译成“”?,第1张

在使用Java的Base64编码和解码时,如果字符中包含null值,则可能会导致字符串中的null值被编译为空字符串(“”)。这是因为Base64编码通常是基于字节数组的,而字符串在Java中是Unicode编码,因此在编码和解码过程中,字符串可能会被解释为null字符。

为了避免这种情况,您可以将字符串转换为字节数组,然后再进行Base64编码和解码。您可以使用Java的getBytes()方法将字符串转换为字节数组,并使用new String()方法将字节数组转换回字符串。

以下是一个简单的例子,展示了如何在Java中使用Base64编码和解码字符串:

import java.util.Base64

public class Main {

public static void main(String[] args) {

String originalString = "Hello, World!\0"

byte[] originalBytes = originalString.getBytes()

// Encode the original string as a base64 string

String encodedString = Base64.getEncoder().encodeToString(originalBytes)

System.out.println("Encoded String: " + encodedString)

// Decode the base64 string back to the original string

byte[] decodedBytes = Base64.getDecoder().decode(encodedString)

String decodedString = new String(decodedBytes)

System.out.println("Decoded String: " + decodedString)

}

}

输出:

Encoded String: SGVsbG8sIFdvcmxkITAK

Decoded String: Hello, World!\0

这样,您就可以保证字符串中的null值不会在Base64编码和解码过

程中被丢失,并可以保证编码和解码的字符串与原始字符串完全匹配。

1.split()+正则表达式来进行截取。

将正则传入split()。返回的是一个字符串数组类型。不过通过这种方式截取会有很大的性能损耗,因为分析正则非常耗时。

String str = "abc,12,3yy98,0"

String[]  strs=str.split(",")

for(int i=0,len=strs.lengthi<leni++){

System.out.println(strs[i].toString())

}

运行结果:

abc

12

3yy98

0

2.通过subString()方法来进行字符串截取。

subString通过不同的参数来提供不同的截取方式

2.1只传一个参数

例如:

String sb = "bbbdsajjds"

sb.substring(2)

将字符串从索引号为2开始截取,一直到字符串末尾。(索引值从0开始);

2.2传入2个索引值

String sb = "bbbdsajjds"

sb.substring(2, 4)

从索引号2开始到索引好4结束(并且不包含索引4截取在内,也就是说实际截取的是2和3号字符);

运行结果如下:

bdsajjds

bd

3.通过StringUtils提供的方法

StringUtils.substringBefore(“dskeabcee”, “e”)

/结果是:dsk/

这里是以第一个”e”,为标准。

StringUtils.substringBeforeLast(“dskeabcee”, “e”)

结果为:dskeabce

这里以最后一个“e”为准。

Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程 。

Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等。

java截取两个字符中间的字符和后面的字符示例如下:

package com.qiu.lin.he

import java.util.regex.Matcher

import java.util.regex.Pattern

public class CeShi {

public static void main(String[] args) {

String str = "<p>sad2f</p>"//两个字符串中间

String regex = "<p>(.*)</p>"

Pattern pattern = Pattern.compile(regex)

Matcher matcher = pattern.matcher(str)//匹配类

while (matcher.find()) {

System.out.println(matcher.group(1))//打印中间字符

}

}

}

结果如下: